我正在处理的数据是一个聚类数据,在一个组中有多个观察结果,我生成了一个毛毛虫图,并希望为每个组(zipid)标记,而不是每一行,我当前的图形和代码看起来像这样:
text = hosp_new[,c("zipid")]
ggplot(hosp_new, aes(x = id, y = oe, colour = zipid, shape = group)) +
# theme(panel.grid.major = element_blank()) +
geom_point(size=1) +
scale_shape_manual(values = c(1, 2, 4)) +
geom_errorbar(aes(ymin = low_ci, ymax = high_ci)) +
geom_smooth(method = lm, se = FALSE) +
scale_linetype_manual(values = linetype) +
geom_segment(aes(x = start_id, xend = end_id, y = region_oe, yend = region_oe, linetype = "4", size = 1.2)) +
geom_ribbon(aes(ymin = region_low_ci, ymax = region_high_ci), alpha=0.2, linetype = "blank") +
geom_hline(aes(yintercept = 1, alpha = 0.2, colour = "red", size = 1), show.legend = "FALSE") +
scale_size_identity() +
scale_x_continuous(name = "hospital id", breaks = seq(0,210, by = 10)) +
scale_y_continuous(name = "O:E ratio", breaks = seq(0,7, by = 1)) +
geom_text(aes(label = text), position = position_stack(vjust = 10.0), size = 2)
字符串
卡特彼勒图:
x1c 0d1x的数据
每种颜色代表一个区域,我只想要一个标签/每个区域,但不知道如何删除重复的标签在这个图。任何想法?
1条答案
按热度按时间juud5qan1#
关键是让
geom_text
只为每个zipid
返回一个值,而不是多个值。如果我们希望每个zipid
标签位于其组的中间,那么我们可以使用id
的平均值作为每个标签的x坐标。在下面的代码中,我们使用stat_summaryh
(来自ggstance
包)来计算标签x坐标的平均值id
,并为每个zipid
返回一个标签。字符串
x1c 0d1x的数据
您也可以使用faceting,正如@user20650所提到的。在下面的代码中,
panel.spacing.x=unit(0,'pt')
删除了facet面板之间的空间,而expand=c(0,0.5)
在每个面板的侧面添加了0.5个单位的填充。这些共同确保了刻度线之间的恒定间距,即使是跨facet。型