20 以上の国からの 20 以上の製品それぞれの注文データを含むデータ フレームがあります。ggplot2
次のようなコードを使用して、ハイライト テーブルに入れました。
require(ggplot2)
require(reshape)
require(scales)
mydf <- data.frame(industry = c('all industries','steel','cars'),
'all regions' = c(250,150,100), americas = c(150,90,60),
europe = c(150,60,40), check.names = FALSE)
mydf
mymelt <- melt(mydf, id.var = c('industry'))
mymelt
ggplot(mymelt, aes(x = industry, y = variable, fill = value)) +
geom_tile() + geom_text(aes(fill = mymelt$value, label = mymelt$value))
次のようなプロットが生成されます。
実際のプロットでは、450 セルのテーブルは、注文が集中している「ホットスポット」を非常によく示しています。実装したい最後の改良点は、アイテムを x 軸と y 軸の両方にアルファベット順に配置することです。したがって、上のプロットでは、y 軸 ( variable
) はall regions
、americas
、次にeurope
x 軸 ( ) は、およびのindustry
ように順序付けられます。実際、x 軸はすでにアルファベット順に並べられていますが、そうでない場合はどうすればよいかわかりません。all industries
cars
steel
SOには似たようなものがたくさんあることを知っているので、この質問をしなければならないことに少し恥ずかしい思いをしますが、Rでの並べ替えと順序付けは私の個人的なバグベアのままであり、これを機能させることができません。factor
試してみましたが、最も単純なケースを除いて、levels
、 、sort
、order
およびの呼び出しのウェルターで迷子になりましたwith
。
Q. 上記のハイライト テーブルを、y 軸と x 軸の両方がアルファベット順に並べられるようにするにはどうすればよいですか?
編集: 以下の smillig と joran からの回答は、テスト データの質問を解決しますが、実際のデータでは問題が残ります: アルファベット順の並べ替えができません。データフレームの基本構造は同じに見えるので、これには頭を悩ませます。明らかに私は何かを省略しましたが、何ですか??
> str(mymelt)
'data.frame': 340 obs. of 3 variables:
$ Industry: chr "Animal and vegetable products" "Food and beverages" "Chemicals" "Plastic and rubber goods" ...
$ variable: Factor w/ 17 levels "Other areas",..: 17 17 17 17 17 17 17 17 17 17 ...
$ value : num 0.000904 0.000515 0.007189 0.007721 0.000274 ...
ただし、このwith
ステートメントを適用しても、レベルはアルファベット順に並べ替えられません。
> with(mymelt,factor(variable,levels = rev(sort(unique(variable)))))
[1] USA USA USA
[4] USA USA USA
[7] USA USA USA
[10] USA USA USA
[13] USA USA USA
[16] USA USA USA
[19] USA USA Canada
[22] Canada Canada Canada
[25] Canada Canada Canada
[28] Canada Canada Canada
以下に至るまで:
[334] Other areas Other areas Other areas
[337] Other areas Other areas Other areas
[340] Other areas
そして、 a を実行するlevels()
と、同じことが表示されるようです:
[1] "Other areas" "Oceania" "Africa"
[4] "Other Non-Eurozone" "UK" "Other Eurozone"
[7] "Holland" "Germany" "Other Asia"
[10] "Middle East" "ASEAN-5" "Singapore"
[13] "HK/China" "Japan" "South Central America"
[16] "Canada" "USA"
つまり、上記の非反転バージョンです。
次のショットは、実際のデータのプロットがどのように見えるかを示しています。ご覧のとおり、x 軸は並べ替えられていますが、y 軸は並べ替えられていません。私は困惑しています。何かが欠けていますが、それが何であるかわかりません。