Точки стека в ggplot

#r #plot #ggplot2

#r #график #ggplot2

Вопрос:

Я создаю точечную диаграмму, используя ggplot приведенный ниже код и данные, которые создают следующий график.

 ggplot(data=holder, aes(x=Coef, y=CoefShort, colour=factor(Name)))   geom_point()   labs(x="Value", y="Coefficient")   scale_colour_discrete("Model")
  

точечный график

Это значительное количество наложений, и я хотел бы создать некоторое вертикальное разделение между точками. Но это должно быть систематическим, то есть порядок всегда красный-зеленый-синий.

geom_stack кажется, работает только тогда, когда значение x одинаково, а не когда значение y одинаково. Я попытался использовать противоположные оси (поменяв местами x и y), выполнив position_dodge() затем выполнив coord_flip() . Это работает только с барами, как показано ниже.

 ggplot(data=holder, aes(y=Coef, x=CoefShort, fill=factor(Name)))   geom_bar(position="dodge", aes(ymax=Coef))   labs(y="Value", x="Coefficient")   scale_fill_discrete("Model")   coord_flip()
  

Столбчатая диаграмма с вертикальным уклоном

Есть идеи, как добиться такого стекирования с помощью geom_point() ? Спасибо.

Данные:

structure(list(Coef = c(-3875.46969970703, 7871.08213392282,
1120.33185255098, 1510.13540851347, 1439.07714113149, 1800.92398445336,
-3760.05411752962, 8183.74295221482, 1126.98290537184, 1517.99524139857,
1442.73063836897, 1808.03721179571, -90.6507661872817, -71.7225864185226,
-103.615416254984, -732.167583256825, -1075.67574987664, -1908.56266462926,
-7362.80215630299, 8886.12888250011, 655.767448263926, 848.716877683527,
869.395903077767, 998.254438325812, -211.682481369473, -303.310032581644,
-506.1995360406, -978.697664841985, -1440.30190190734, -2325.22236024601,
2625.94998656519, 3573.68798735398, 4217.82910198788, 4534.8789695778,
4967.19941000705, 5072.02764498623, 5419.64684461491), Name = c(1,
1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3), CoefShort = structure(c(1L,
2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L,
13L, 14L, 15L, 16L, 17L, 18L, 19L), .Label = c("(Intercept)",
"carat", "Good", "Very Good", "Premium", "Ideal", "E", "F", "G",
"H", "I", "J", "SI2", "SI1", "VS2", "VS1", "VVS2", "VVS1", "IF"
), class = "factor")), .Names = c("Coef", "Name", "CoefShort"
), class = "data.frame", row.names = c(NA, -37L))

Ответ №1:

точки в geom_point имеют нулевую ширину, поэтому вам нужно установить ширину уклонения:

 ggplot(data=holder, aes(y=Coef, x=CoefShort, colour=factor(Name)))   
  geom_point(position=position_dodge(width = 0.8))   
  labs(y="Value", x="Coefficient", colour = "Model")   
  coord_flip()
  

введите описание изображения здесь

Комментарии:

1. Это работает потрясающе. Я не думаю, что это возможно без прохождения всей части coordin_flip()?

2. Это идеально подходит для того, что я просил. Но оказывается, что после того, как coordin_flip() scales=»свободно» в facet_wrap() больше не работает должным образом.

3. @jared: Ты пробовал position_dodge(height=0.8) (вместо width )?