我对我的数据做了类似的事情,但尽管透明,但很难可视化(我的数据的段数比下面的例子少得多),以看到它们的开始和结束。
require(ggplot2)
ggplot(iris, aes(x = Petal.Length, xend = Petal.Width,
y = factor(Species), yend = factor(Species),
size = Sepal.Length)) +
geom_segment(alpha = 0.05) +
geom_point(aes(shape = Species))
遇到这种解决方案,但是线条是纵横交错的。有没有办法让抖动产生与尖端点平行的线条?我已经尝试过position_dodge
而不是position_jitter
,但它需要ymax
。ymax
可以集成到geom_segment
中使用吗?
ggplot(iris, aes(x = Petal.Length, xend = Petal.Width,
y = factor(Species), yend = factor(Species))) +
geom_segment(position = position_jitter(height = 0.25))+
geom_point(aes(size = Sepal.Length, shape = Species))
3条答案
按热度按时间k0pti3hp1#
据我所知,
geom_segment
不允许抖动或匀光。您可以将抖动添加到数据框中的相关变量,然后绘制抖动变量。在您的示例中,因子转换为数值,然后使用scale_y_continuous
将因子水平的标签添加到轴上。但似乎
geom_linerange
允许躲闪。ttcibm8c2#
geom_segment
的position
参数可能对您有帮助,请参见Slightly change geom_segment's position of x only, but keep position of xend constantcnwbcb6i3#
针对
ggplot2
版本3.4.2进行了更新,并基于另一个short answer进行构建:您现在可以使用
position = position_dodge2(width = 0.1)
。例如:将生成此图形:
注意,
ggplot2
只允许geom_linerange()
用于y轴,因此使用coord_flip()
。