【问题标题】:pie chart in ggplot text labelling horrorggplot文本标签恐怖中的饼图
【发布时间】:2017-02-23 10:54:30
【问题描述】:

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

我有: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)

并且情节的标签方向错误。

不要介意这种奇怪的图片字体。我尝试使用许多不同的功能而不是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 中的数据不会改变整个情节中的任何内容。抱歉,我卡住了,但我觉得解决方案就在那里。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    当您为 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 的情况下完成了所有故障排除,只查看了普通的 barplot 版本。

    不管怎样,这里是部分解决方案:

    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)
    

    【讨论】:

    • 好的。非常感谢!你确实回答了我的问题,但这是改变 x 值的最重要问题,因为文本是重叠的(在实际图表中,不是这个例子)。计算这些值非常棘手,我需要一些提示,但可能是另一种威胁。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多