我无法解决这种奇怪的情况。某处我有错误或错误,但坐了三个半小时就无法解决它。
我有: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中反转数据并不会改变整个图中的任何内容。对不起,我卡住了,但觉得解决方案就在那里。
答案 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)