饼图在ggplot文本标签恐怖

时间:2017-02-23 01:42:09

标签: r ggplot2

我无法解决这种奇怪的情况。某处我有错误或错误,但坐了三个半小时就无法解决它。

我有:sta_df

             sta value
1 IN_LIQUIDATION    29
2     LIQUIDATED    47
3      OPERATING   435
4    TRANSFORMED     8

sp <- ggplot(sta_df, aes(x="", y=value, fill=sta)) +
  geom_bar(width = 1, stat = "identity", color = "black") +
  coord_polar("y") + scale_fill_brewer(palette="Pastel2") +
  geom_text(aes(x = seq(1.2,1.4,,4), label = percent(value/sum(value))), 
                position = position_stack(vjust = 0.5), size=5)

并且情节标签方向错误。

enter image description here

没关系这张奇怪的图片字体。我尝试使用许多不同的功能而不是position_stack。例如:

geom_text(aes(x = rep(seq(0.9,1.4,,6),1), y = value/2 + c(0, cumsum(value)[-length(value)])

但它没有帮助。这个帖子既不是:wrong labeling in ggplot pie chart

当我想要反转y=rev(value)时,图例与数据并不对应。将方向1-1放在一起并不比倒转所有方法更重要。在geom_text中反转值会产生类似吃豆人的图表。我已更新ggplot2

老实说,问题是因为图表开始逆时针绘制,尽管方向设置为顺时针方向,文本编号方向正确。并且在data.frame中反转数据并不会改变整个图中的任何内容。对不起,我卡住了,但觉得解决方案就在那里。

1 个答案:

答案 0 :(得分:2)

geom_label()中的标签指定不同的x值时会出现问题。为什么?因为您依靠position_stack()来提供您的y值。但是当这些点不再共享相同的x时,它们就不会被堆积在一起。了。如果要自定义x值,则需要计算自己的y值,如此处(Showing data values on stacked bar chart in ggplot2)和此处(http://docs.ggplot2.org/current/geom_text.html)所述,位于页面底部附近。顺便说一句,我删除了coord_polar后的所有故障排除,只看了简单的条形图版本。

无论如何,这是一个部分解决方案:

sta_df <- read.table(header=TRUE,
text="     sta value
IN_LIQUIDATION    29
LIQUIDATED        47
OPERATING        435
TRANSFORMED        8")

library(ggplot2)
library(scales)

sta_df$fraction = sta_df$value / sum(sta_df$value)

sp <- ggplot(sta_df, aes(x="", y=value, fill=sta)) +
      geom_bar(width=1, stat="identity", color="black",) +
      scale_fill_brewer(palette="Pastel2") +
      coord_polar(theta="y") +
      geom_text(aes(x=1.4, label=percent(fraction)), 
                position=position_stack(vjust=0.5), size=4)

ggsave("pie_chart.png", plot=sp, height=4, width=6, dpi=150)

enter image description here