3

3 つの建物のエネルギー使用量を記録したデータ セットがあります。ダイヤモンド セットから模倣できる溶けたデータ フレームがあります。

data <- melt(diamonds[,c('depth','table','cut','color')],id=c('cut','color'))

基本的に、3 つの異なる建物 (7 つの「色」要素) からの各月 (「カット」) の暖房 (「深さ」) と冷房 (「表」) のデータがあります。3 つの建物 (7 つの「色」要素) を、各月のバー プロット (「カット」) に並べてプロットしたいと思います。

冷却 (「テーブル」) または加熱 (「深さ」) を表すバーを、建物 (「色」係数) に基づいて色合いを変化させながら、月ごとにグループ化 (「カット」) したままにします。これは、ダイヤモンド データを視覚化する方法としては不適切ですが、建物の暖房と冷房の月は通常重ならないため、うまく機能するはずです。これまでのところ、私は持っています:

p <- ggplot(data,
        aes(color,value,group=cut))
p <- p + geom_bar(stat = 'identity',
              position = 'dodge',
              aes(fill = variable))
print(p)

私は scale_fill_manual で遊んでみましたが、うまくいく戦略を思いつきませんでした:

colours <- c('#0000FF', '#0033FF', '#0066FF', '#FF0000', '#FF3300', '#FF6600')

p <- p + scale_fill_manual(values = colours,
                           group = data$variable)
4

1 に答える 1

6

ちょっとしたトリックで、それは可能です。ダイヤモンドに基づくデータ セットの導出は非常に優れていましたが、より小さなデータ セットで作業したいと考えています

set.seed(1234)
data <-
expand.grid(month = month.abb,
            building = c("Building A", "Building B", "Building C"),
            hc = c("Heating", "Cooling"))
data$value <- rnorm(nrow(data), 60, 10)

hc塗りつぶしの色を変数 ( ) と建物 ( )の両方に基づくようにしたいのでbuilding、その相互作用に設定します。

ggplot(data, aes(building,value,group=month)) + 
  geom_bar(stat = 'identity',
           position = 'dodge',
           aes(fill = interaction(building, hc)))

ここに画像の説明を入力

さまざまな近い色合いを表す色を選択して、これらをあなたが望むものに近づけることができます. RColorBrewerパレットの「Blues」と「Reds」の中間を使いました。

colours <- c("#FC9272", "#FB6A4A", "#EF3B2C", "#9ECAE1", "#6BAED6", "#4292C6")
# library("RColorBrewer")
# colours <- c(brewer.pal(9,"Reds")[4:6], brewer.pal(9,"Blues")[4:6])

scale_fill_manualこれらの色を割り当てるために使用されます。

ggplot(data, aes(building,value,group=month)) + 
  geom_bar(stat = 'identity',
           position = 'dodge',
           aes(fill = interaction(building, hc))) +
  scale_fill_manual(values=colours)

ここに画像の説明を入力

真の策略は、伝説の複雑さを軽減することにあります。2 つのレベル (色の点で中央の建物) をリストし、それらに異なる名前 (および凡例の別のタイトル) を付けます。

ggplot(data, aes(building,value,group=month)) + 
  geom_bar(stat = 'identity',
           position = 'dodge',
           aes(fill = interaction(building, hc))) +
  scale_fill_manual("Heating/cooling",
                    values=colours,
                    breaks=c("Building B.Heating", "Building B.Cooling"),
                    labels=c("Heating", "Cooling"))

ここに画像の説明を入力

于 2012-10-03T21:45:50.307 に答える