2017-02-23 43 views
1

Я не могу решить эту странную ситуацию. Где-то у меня ошибка, или ошибка, но сидение в течение трех полчаса не могло справиться с этим.круговая диаграмма в тексте ggplot с надписью horror

у меня есть: 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

Nevermind этот странный шрифт картины. Я попытался использовать множество различных функций вместо 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 дают диаграмму, подобную Pac-Man. Я обновил ggplot2.

Честно говоря, проблема в том, что диаграмма начинает нарисовать против часовой стрелки, хотя направление установлено по часовой стрелке, а текстовые числа - в правильном направлении. И реверсирование данных в data.frame ничего не меняет во всем сюжете. Извините, я застрял, но чувствую, что это решение.

ответ

1

Проблема возникает, когда вы назначаете разные значения x вашим ярлыкам в geom_label(). Зачем? Потому что вы полагаетесь на 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

+0

Ok. Большое спасибо! Вы действительно ответили на мой вопрос, но это самая важная проблема для изменения значений x, потому что тексты перекрываются (в реальных диаграммах, а не в этом примере). Вычисление этих значений довольно сложно, и мне нужны некоторые подсказки, но, вероятно, в других угрозах. Благодарю. –

+0

Добро пожаловать. Удачи! – bdemarest