如何使用ggplot2为geom_pointrange()类型的图形获取图例键中的垂直线

斯威哈特

更新:这个问题没有解决。图例键中的垂直线现在是ggplot2中geom_pointrange()的默认值。

对于ggplot2图形,它具有用于点估计的符号和代表该估计范围的垂直线(95%置信区间,四分位间距,最小值和最大值等),我无法得到图例键来显示带有符号的符号垂直线。由于geom_pointrange()只有论点yminymax,我想的预期(默认值)功能geom_pointrange(show_guide=T)将有垂直线(我说的默认值,因为据我所知,有coord_flip可以在图中绘制水平线)。我也了解,图例键在左右位置时,图例键中具有垂直线将使垂直线“一起运行” ...但是对于顶部或底部的图例,在符号中具有垂直线意味着该键将与情节中出现的内容匹配。

但是我尝试过的方法仍然在图例键中放置了水平线:

## set up
library(ggplot2)
set.seed(123)
ru <- 2*runif(10) - 1
dt <- data.frame(x   = 1:10, 
                 y   = rep(5,10)+ru, 
                 ylo = rep(1,10)+ru, 
                 yhi = rep(9,10)+ru,
                 s   = rep(c("A","B"),each=5),
                 f   = rep(c("facet1", "facet2"), each=5))

默认show_guide=Tgeom_pointrange产率所需的情节,但有在垂直期望(以情节相匹配)图例键水平线:

ggplot(data=dt)+
  geom_pointrange(aes(x     = x, 
                      y     = y, 
                      ymin  = ylo, 
                      ymax  = yhi, 
                      shape = s), 
                  size=1.1,
                  show_guide=T)+
  theme(legend.position="bottom")

在此处输入图片说明

geom_pointgeom_segment一起尝试会产生所需的图,但图例键中有一条水平线,需要垂直(以便与该图匹配):

ggplot(data=dt)+
  geom_point(aes(    x = x, 
                     y = y, 
                 shape = s), 
             size=3,
             show_guide=T)+
  geom_segment(aes(   x = x, 
                   xend = x, 
                      y = ylo, 
                   yend = yhi), 
               show_guide=T)+
  theme(legend.position="bottom")

在此处输入图片说明

geom_pointgeom_vline一起尝试会产生所需的图例键,但不遵循图中的yminymax值:

ggplot(data=dt)+
  geom_point(aes(x=x, y=y, shape=s), show_guide=T, size=3)+
  geom_vline(aes(xintercept=x, ymin=ylo, ymax=yhi ), show_guide=T)+
  theme(legend.position="bottom")

在此处输入图片说明

如何获得第三个图的图例键,但前两个图之一的图?

斯威哈特

我的解决方案涉及到绘制一条垂直线,并绘制出geom_vline(show_guide=T)x值超出显示的x轴范围的垂直线geom_segment(show_guide=F)

ggplot(data=dt)+
  geom_point(aes(x=x, y=y, shape=s), show_guide=T, size=3)+
  geom_segment(aes(x=x, xend=x, y=ylo, yend=yhi), show_guide=F)+
  geom_vline(xintercept=-1, show_guide=T)+
  theme(legend.position="bottom")+
  coord_cartesian(xlim=c(0.5,10.5))

在此处输入图片说明

coord_cartesian()x轴数字的解决方案很好,但facet_grid(scales='free_x')可能会出现问题:

# problem:  coord_cartesian with numeric x and facetting with scales=free_x
ggplot(data=dt)+
  geom_point(aes(x=x, y=y, shape=s), show_guide=T, size=3)+
  geom_segment(aes(x=x, xend=x, y=ylo, yend=yhi), show_guide=F)+
  geom_vline(xintercept=-1, show_guide=T)+
  theme(legend.position="bottom")+
  coord_cartesian(xlim=c(0.5,10.5))+
  facet_grid(.~f, scales="free_x")

在此处输入图片说明

因此,在那种情况下,另一种解决方案可能并不适用于每种情况,而是将x值更改为factor的某些有意义的特征,然后调整xlim:

## hack solution: adjust xlim after change x to factor or character 
## (carefully -- double check conversion):
dt$x <- factor(dt$x)
ggplot(data=dt)+
  geom_point(aes(x=x, y=y, shape=s), show_guide=T, size=3)+
  geom_segment(aes(x=x, xend=x, y=ylo, yend=yhi), show_guide=F)+
  geom_vline(xintercept=-1, show_guide=T)+
  theme(legend.position="bottom")+
  coord_cartesian(xlim=c(0.5,5.5))+
  facet_grid(.~f, scales="free_x")

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

matplotlib中带有垂直线的图例

如何在ggplot中为垂直线添加图例?

带有重要性注释的ggplot2 geom_pointrange中按方面不同的颜色值

如何在ggplot2中为带有图例的垂直线添加标签

如何在ggplot2中为图例键混合不同的符号?

ggplot2:具有coord_flip()和自由刻度的geom_pointrange()facet_grid()

ggplot2构面中的单个垂直线

ggplot2:如何在时间x轴上将文本添加到多条垂直线(geom_vlines)?

ggplot2分组散点图中数据点的垂直线

将ggplot2中的图例标题和图例键居中对齐以获取长图例标题

ggplot2:如何在图例键中分隔geom_polygon和geom_line?

删除图例中由ggplot中的geom_vline引起的垂直线

ggplot2垂直线未插入所需的位置

如何填充geom_pointrange()后面的ggplot区域?

ggplot2 boxplot仅显示垂直线

如何在ggplot2中获取堆叠的geom_bar和geom_point的通用图例?

使用matplotlib在图例中创建自定义垂直线标记

使用ggplot2在多个异常点的日期时间添加垂直线

如何在holoviews + bokeh中获得带有图例标签的全高垂直线?

如何添加图例以标识ggplot中的垂直线?

如何使用ggplot2在R中的散射极坐标图中获得垂直线

如何在单个ggplot2中对齐图层(密度图和垂直线)

ggplot2:geom_errorbarh结尾处的两条垂直线的大小

在ggplot点图中为垂直线添加第二个图例

如何使用带有时间序列数据的ggplot为graf添加垂直垂直线?

如何在曲线框html和css中添加垂直线分割和图例?

如何使用ggplot2中的geom_pointrange()自动消除线型图例的形状和图例的线型?

在ggplot2中,如何使用geom_hline函数显示图例?

如何使用HighStocks或HighCharts在图表中添加垂直线?

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    使用AWS Cognito和React的仅限Facebook / Google的登录名(无用户名/密码)

  3. 3

    创建Windows Phone 8应用并将其连接到数据库的最佳方法(最好是SQL Server)

  4. 4

    为什么Java中的System.out.println()打印到控制台?

  5. 5

    卷曲函数无法解析来自bash中变量的代理

  6. 6

    是什么在Android的consumer-rules.pro和proguard-rules.pro之间的区别?

  7. 7

    设置与Apache POI Excel表散点图标记图标的颜色

  8. 8

    将Qt Pyside2与asyncio await语法一起使用?

  9. 9

    崇高的文字+蟒蛇的蟒蛇

  10. 10

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  11. 11

    OpenJDK的和AdoptOpenJDK的区别

  12. 12

    大型数据集缓存到Spark内存中时,“超出了GC开销限制”(通过sparklyr和RStudio)

  13. 13

    “执行测试CMAKE_HAVE_LIBC_PTHREAD”失败实际上是什么意思?

  14. 14

    使用Core 2.2中的Identity,如何在关闭浏览器15分钟后保持会话活动?

  15. 15

    React中的ForwardRefExoticComponent和ForwardRefRenderFunction有什么区别?

  16. 16

    猫鼬查找结果,然后将字段替换为findOne

  17. 17

    如何降级Google Colab的Torch版本

  18. 18

    Keras提前停止回调错误,val_loss指标不可用

  19. 19

    如何避免VSCode中的“导入路径不能以.ts扩展名结尾”错误?

  20. 20

    Nuxt.JS:如何在页面中获取路由URL参数

  21. 21

    是否有为什么会AccessibilityManager.sInstance导致内存泄漏的一个原因?

热门标签

归档