R geom和ggplot。美学必须为长度1或与数据(11)相同:x,y,ymin,ymax

R geom和ggplot。美学必须为长度1或与数据(11)相同:x,y,ymin,ymax,r,ggplot2,R,Ggplot2,我用这个脚本试着创造一个像这样的人物 我正在使用下面的数据和脚本,但出现了以下消息: 错误:长度必须为1或与数据(11)相同:x,y,ymin,ymax dput(graf1)的输出为: 结构(列表)est=结构(c(10L,1L,2L,3L,4L,5L,6L, 标签=c(“A”、“B”、“c”、“D”、“E”、“F”、“G”, “H”,“I”,“Intercept”,“J”,class=“factor”),min=c(-2.59987657, 1.90207329, 0.19540912,

我用这个脚本试着创造一个像这样的人物 我正在使用下面的数据和脚本,但出现了以下消息:

错误:长度必须为1或与数据(11)相同:x,y,ymin,ymax

dput(graf1)的输出为:
结构(列表)est=结构(c(10L,1L,2L,3L,4L,5L,6L,
标签=c(“A”、“B”、“c”、“D”、“E”、“F”、“G”,
“H”,“I”,“Intercept”,“J”,class=“factor”),min=c(-2.59987657,
1.90207329, 0.19540912, 0.38539491, 0.44573408, -0.62036798, 
-0.25411668, 0.12885761, -1.11518838, -0.08929551, -0.07907754
),max=c(-2.12964144,2.31358683,0.34741113,0.53284866,0.6833492,,
-0.32613644, 0.12285579, 0.46712478, -0.48094942, 0.05204147, 
0.06417294),.Names=c(“est”、“min”、“max”),class=“data.frame”,row.Names=c(NA,

-11L))
因为只有最小值和最大值,所以最好的方法是
geom\u linerange

库(ggplot2)

df
graf1
是否有一个名为
X
的列?从您粘贴的数据来看,它似乎不是这样。你能运行
dput(graf1)
并将输出粘贴到你的问题中吗?1)不要
附加
;2) 
ggplot(graf1,aes(x=x,y=est,ymin=min,ymax=max))+
更简单;3) @WeihuangWong所说的,您发布的数据集中没有
X
。您的数据框中的
est
可能就是您所说的
X
。那么,数据帧中的
est
(点)数据在哪里?你只有
min
max
。你可以这样做,例如
ggplot(df,aes(est,(min+max)/2,ymin=min,ymax=max))+geom_pointrange()+coord_flip()
,但通常这些图中的点代表实际估计,而不仅仅是直线的中点,因为有时间隔可能是不对称的。Alistaire,非常感谢你的回答。不过,我还有其他疑问。我考虑geom_point(),因为我想通过一个点标记最大值和最小值之间的中间值。如下图所示。你对此也有什么建议吗?谢谢strengejacke.files.wordpress.com/2014/10/lmer1.png
geom_pointrange
或多或少是
geom_linerange(…)+geom_point(…)
的缩写。(
geom_linerange
本身是
geom_segment
的受限版本)您始终可以从它们的组成部分重新创建这些东西,或者添加额外的点,或者根据需要进行自定义。这就是说,可视化应该真实地显示数据,如果要添加的点不是参数估计值,则需要明确这一点,因为此图(“caterpillar图”)通常用于绘制具有错误间隔的估计值。