3

積み上げ棒グラフの上部のみにラベルを付けたいと思います。

ここに私のデータフレームがあります:

#create data frame 
building <- c("Burj \nKhalifa", "Zifeng \nTower", "Bank of \nAmerica Tower", 
              "Burj Al Arab", "Emirates \nTower One", "New York \nTimes Tower",
              "Emirates \nTower Two", "Rose Rayhaan \nby Rotana", "The \nPinnacle", 
              "Minsheng \nBank Building")
occupiable<- c(585, 317, 235, 198, 241, 220, 213, 237, 265, 237)
nonoccupiable <- c(244, 133, 131, 124, 113, 99, 97, 96, 95, 94)
df.build <- data.frame(building, occupiable, nonoccupiable)

#melt data frame for stack bar plot
df.build2 <- melt(df.build, id.vars="building")

そして私の積み上げ棒グラフ:

#comparision true and percived values
ggplot(df.build2, aes(x=reorder(building, -value), y=value, fill=variable)) +
  geom_bar(stat="identity") +
  xlab("") +
  ylab("") +
 #geom_text(aes(label = c("29%" "30%", "36%", "39%", "32%", "31%", "31%", "29%", "29%", "28%")), size = 3, hjust = 0.5, vjust = 3, position = "stack") +
  theme(legend.position="top") +
  ggtitle("Porównanie wartości prawdziwych i odczuwalnych") 

ここに画像の説明を入力

プロット用のコードにこのようなラベルを付けたいとgeom_text()思います(青いバーの高さ/バー全体の高さ)。青い領域に配置する必要があります。どうすればいいですか?

4

2 に答える 2

5

2 つの問題があります。ラベル ベクトルの最初の 2 つの要素の間にカンマがありません。また、ラベル ベクトルが短すぎます。バーが 10 本あるように見えますが、実際には 20 本あります (積み上げられているため)。これを回避するには、ラベルの前に 10 個の空白文字列を置きます。

geom_text(
 aes(label = c(rep("",10),
 "29%", "30%", "36%", "39%", "32%", "31%", "31%", "29%", "29%", "28%")),
size = 3, hjust = 0.5, vjust = 3, position = "stack")

これにより、次のことが得られます。

積み上げ棒グラフ

于 2014-04-21T10:58:42.583 に答える
4

別の解決策 (x 軸のテキストの角度も変更しました):

# creating percentage variables
df.build$occ.perc <- round(df.build$occupiable / (df.build$occupiable + df.build$nonoccupiable) * 100)
df.build$nonocc.perc <- round(df.build$nonoccupiable / (df.build$occupiable + df.build$nonoccupiable) * 100)

# melt data frame for stack bar plot![enter image description here][1]
df.build2 <- cbind(
  melt(df.build, id = c("building"), measure = c(2:3)),
  melt(df.build, id = c("building"), measure = c(4:5), value.name = "perc")
)
df.build2 <- df.build2[,-c(4,5)]
df.build2$perc <- ifelse(df.build2$variable=="occupiable", df.build2$perc==NA, df.build2$perc)

# creating the plot
ggplot(df.build2, aes(x=reorder(building, -value), y=value, fill=variable)) +
  geom_bar(stat="identity") +
  xlab("") +
  ylab("") +
  geom_text(aes(label = perc), size = 3, hjust = 0.5, vjust = 2, position = "stack") +
  theme(legend.position="top", axis.text.x = element_text(angle = 45, vjust=0.5)) +
  ggtitle("Porównanie wartości prawdziwych i odczuwalnych")

結果: ここに画像の説明を入力

于 2014-04-21T11:15:57.067 に答える