#r #ggplot2
Вопрос:
Я строю график, похожий на демографическую пирамиду. Вот мои данные:
value percent party
-5 0.02 Conservative
-4 0.44 Conservative
-3 7.71 Conservative
-2 24.02 Conservative
-1 12.17 Conservative
1 19.77 Conservative
2 27.17 Conservative
3 7.36 Conservative
4 1.05 Conservative
5 0.26 Conservative
-5 0.04 Labour
-4 0.57 Labour
-3 9.49 Labour
-2 29.38 Labour
-1 13.82 Labour
1 16.99 Labour
2 22.74 Labour
3 5.93 Labour
4 0.87 Labour
5 0.19 Labour
Код для графика работал на днях, вот он:
plot1 <- ggplot(pos_neg_data_final, aes(x = value, y = percent, fill = Party))
geom_bar(data = subset(pos_neg_data_final, Party == "Conservative"), stat = "identity")
geom_bar(data = subset(pos_neg_data_final, Party == "Labour"), stat = "identity")
coord_flip()
scale_x_continuous(breaks = c(-5,-4,-3,-2,-1,0,1,2,3,4,5), name = "Value")
scale_y_continuous(name = "Percent", labels = abs(pretty(pos_neg_data_final$percent)))
scale_fill_manual(values = group.colours, name = "Party", labels = c("Conservative", "Labour"))
И вот график, который он произвел:
Я хочу вернуться и сделать его красивее, добавить заголовок и т.д., Но теперь тот же код выдает следующую ошибку:
Error: Breaks and labels are different lengths
Я попытался добавить разные метки и ограничения, но все равно та же ошибка. Любая помощь действительно ценится.
Комментарии:
1. Приведите примеры данных. Запустите свой код строка за строкой, выясните, на каком шаге вы столкнулись с ошибкой. Затем сравните размеры разрывов и меток.
Ответ №1:
Вот код, который работает:
df=read.table(text = 'value percent Party
-5 -0.02 Conservative
-4 -0.44 Conservative
-3 -7.71 Conservative
-2 -24.02 Conservative
-1 -12.17 Conservative
1 -19.77 Conservative
2 -27.17 Conservative
3 -7.36 Conservative
4 -1.05 Conservative
5 -0.26 Conservative
-5 0.04 Labour
-4 0.57 Labour
-3 9.49 Labour
-2 29.38 Labour
-1 13.82 Labour
1 16.99 Labour
2 22.74 Labour
3 5.93 Labour
4 0.87 Labour
5 0.19 Labour',header=T)
group.colours = c('blue','red')
plot <- ggplot(df, aes(x = value, y = percent, fill = Party))
geom_bar(data = subset(df, Party == "Conservative"), stat = "identity")
geom_bar(data = subset(df, Party == "Labour"), stat = "identity")
coord_flip()
scale_x_continuous(breaks = c(-5,-4,-3,-2,-1,0,1,2,3,4,5), name = "Value")
scale_y_continuous(name = "Percent", labels = abs(pretty(df$percent)))
scale_fill_manual(values = group.colours, name = "Party", labels = c("Conservative", "Labour"))
Проблема заключалась в том, что процентное значение не было отрицательным для консервативных, я думаю.
Выход :
Дай мне знать, было ли это то, что ты хотел
Комментарии:
1. Спасибо! Это были негативы для консервативных данных. Такая простая ошибка.