【问题标题】:Plot a number-line graph in ggplot2在 ggplot2 中绘制数线图
【发布时间】:2017-10-21 17:26:05
【问题描述】:

我的数据集由两列组成,一列是一个因素,另一列包含每个因素水平的平均分数。 我想创建一个数字线图,其中因子标签可以沿数字线显示在图形上,数字线可以是水平的,也可以是垂直的。例如 更新: 我使用答案中提供的代码测试了我的实际数据,结果如下。

数据:

Category    dim1
Academic    -20.0285
AdminWrit   -24.262
BInd.   1.343235294
BNews   -5.69675
BRDDiss 11.981
BRDInt  14.639
BRDNws  -16.9715
BRDTlks 7.953
BssLett -22.146
BTech   -10.824
ClsLessons  3.5675
Comments    8.92779661
Comntry -0.941
Dem/Doc -7.176
Editorial   -14.969
ExmScript   -11.881
F2FConv 12.89844444
FBGroups    14.20809091
FBStatus    5.1265
Leg/ThsPrs  -13.772
N-BRDTlks   -1.532
Novel   -3.556
NwsRep  -14.25
Par/PolDeb  3.971111111
Popular -9.94925
Reprtage    -19.255
Sh-Story    1.363
SkillHob    -8.903
SocLett -10.63133333
Speech  -1.215666667
StdntEssy   -7.786
Tweets  9.68675

结果:

【问题讨论】:

  • ggplot(data, aes(x=Score)) + geom_text(aes(y=Category))+coord_flip()?
  • 不幸的是,我的知识非常有限,我开始通过查看已经在线提供的类似代码 sn-ps 在 R 中编写(=复制粘贴)一些代码。我在这方面找不到任何东西,这就是我不得不问的原因。

标签: r ggplot2 graph


【解决方案1】:

你可以试试别的(你的表应该命名为d):

library(ggplot2)
ggplot(d) +
    geom_text(aes(-1, Score, label = Score)) +
    geom_text(aes(1, Score, label = Category)) +
    geom_vline(xintercept = 0, linetype = 4) +
    coord_cartesian(xlim = c(-5, 5)) +
    labs(x = NULL,
         y = NULL) +
    theme_classic() +
    theme(axis.line.y = element_blank(),
          axis.ticks = element_blank(),
          axis.text = element_blank())

【讨论】:

  • 谢谢,我会在这个例子的基础上让它更适合我的目的。
  • 但是此时您必须问自己,使用 ggplot() 真正获得了什么?单独使用grid 图形可能同样容易。你仍然得到我的支持。
  • @PoGibas 这是我想要的一个很好的近似值。我希望其他人可以提供另一种更合适的解决方案。
  • @MrFlick (如果评论是给我的)我也会研究 base r 解决方案。只是我习惯了(搜索和寻找答案)ggplot2。代码 sn-ps 很容易获得(通常)。
  • 请看我第一篇文章中的情节结果。文本标签重叠。我认为 ggplot2 中的 jitter() 函数可能会有所帮助,但我不知道它是否能够强制相似垂直水平上的值在该水平上形成水平线。否则我认为具有相似平均学校的因子水平应该在一起(在四舍五入后),然后再次绘制它们。
猜你喜欢
  • 2022-08-16
  • 1970-01-01
  • 2013-08-01
  • 2011-04-27
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多