geom_text 仅在堆积条形图的顶部 [英] geom_text on only top part of stacked bar plot

查看:17
本文介绍了geom_text 仅在堆积条形图的顶部的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望仅在堆积条形图的顶部添加标签.

I would like to have labels on only the top part of my stacked bar plot.

这是我的数据框:

#create data frame 
building <- c("Burj 
Khalifa", "Zifeng 
Tower", "Bank of 
America Tower", 
              "Burj Al Arab", "Emirates 
Tower One", "New York 
Times Tower",
              "Emirates 
Tower Two", "Rose Rayhaan 
by Rotana", "The 
Pinnacle", 
              "Minsheng 
Bank 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() 中有这样的标签(蓝条的高度/整个条的高度).它应该放在蓝色区域.我该怎么做?

I would like to have labels like this in geom_text() in my code for plotting (height of blue bar/height of whole bar). It should be placed in the blue area. How can I do it?

推荐答案

另一种解决方案(我也改变了x轴文字的角度):

Another solution (I also changed the angle of the x-axis text):

# 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")

结果:

这篇关于geom_text 仅在堆积条形图的顶部的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆