数据是:

df <- structure(list(vec = c("PC", "DEFAULT", "INFORMED"), mean = c(1.34944359241928, 
                                                          1.36249329506777, 1.34671188869646), sd = c(0.57779881866326, 
                                                                                                      0.537279303541924, 1.53585580464849), min = c(0.196903771571785, 
                                                                                                                                                    0.28781509871908, -1.66860228474139), `0.5quant` = c(1.35295469982876, 
                                                                                                                                                                                                         1.36643973099316, 1.34687516700723), max = c(2.48177705326348, 
                                                                                                                                                                                                                                                      2.41483607230639, 4.36109982194179), mode = c(NA_real_, NA_real_, 
                                                                                                                                                                                                                                                                                                    NA_real_), kld = c(1.9807860333589e-08, 2.97333113261951e-08, 
                                                                                                                                                                                                                                                                                                                       3.91753938449056e-10), ID = 1:3), row.names = c(NA, -3L), class = "data.frame")

我想将其绘制为:

yaxis <- c("Ppppppppp ppppppp 
pppp pp pppppp 
(ppp)", "Uuuuuuuuu uuuuu", "Iiiiiii iiiii 
       ii Iiiiii (iiii)")

myplot <- ggplot(data = df, aes(x = mean, y = ID)) +
  geom_point() +
  geom_errorbarh(aes(xmin = min, xmax = max), height = .1) + geom_vline (xintercept = 0, linetype = 2) + scale_x_continuous(breaks=seq(-4,4.5,0.5)) + scale_y_continuous(breaks = 1:3, labels = yaxis)

enter image description here

我的问题如下:

  1. 我想缩小y轴上"i"、"u"和"p"之间的距离:换句话说,白线必须消失(相应地,我在图表中用红色标记将它们划掉),三条黑线(可信/置信区间)必须位于y轴上更近的位置.

  2. 我想将标签中的文本置于y轴的中心(我用蓝色标记圈出它们).换句话说,每个标签中的文本必须居中.

伙计们,你们能帮我一下吗?

推荐答案

将映射到y上的变量转换为因子,并使用hjust= .5将轴文本置于中心.此外,我添加了lines breaks "\n"来将标签分解为多行.

library(ggplot2)

yaxis <- c(
  "Ppppppppp ppppppp\npppp pp pppppp\n(ppp)",
  "Uuuuuuuuu uuuuu",
  "Iiiiiii iiiii\nii Iiiiii (iiii)"
)

ggplot(data = df, aes(x = mean, y = factor(ID))) +
  geom_point() +
  geom_errorbarh(aes(xmin = min, xmax = max), height = .1) +
  geom_vline(xintercept = 0, linetype = 2) +
  scale_x_continuous(breaks = seq(-4, 4.5, 0.5)) +
  scale_y_discrete(labels = yaxis) +
  theme(axis.text.y = element_text(hjust = .5))

R相关问答推荐

R -列表元素中所有命名项的总和

使用gggrassure减少地块之间的空间

有没有一种方法可以从函数中创建一个值的列表,然后将这些值变成R中的直方图?我一直觉得不行

在R中替换函数中的特定符号

汇总数据表中两个特定列条目的值

可以替代与NSE一起使用的‘any_of()’吗?

DEN扩展包中的RECT树形图出现异常行为

展开对数比例绘图的轴(添加填充)

如何在PackageStatus()中列出&q;不可用的包&q;?

如何识别倒排的行并在R中删除它们?

悬崖三角洲超大型群数计算导致整数溢出

汇总数据的Sheffe检验的P值(平均值和标准差)

如何计算R glm probit中的线性预测因子?

如果COLSUM为>;0,则COLNAME为向量

减go R中列表的所有唯一元素对

如何对r中包含特定(未知)文本的行求和?

如何将这个小列表转换为数据帧?

如何使用字符串从重复的模式中提取多个数字?

使用ggplot2中的sec_axis()调整次轴

Conditional documentr::R中数据帧的summarize()