【问题标题】:Non-numeric x-axis using xYplot使用 xYplot 的非数字 x 轴
【发布时间】:2013-05-22 13:28:38
【问题描述】:

我正在尝试绘制一个图表,其中 x 轴具有由数字数据创建的标签表示的非数字数据。让我用我的模拟示例来解释。我的示例中使用的 data.log 文件可以在 here [pastie.org] 中找到。

执行我的代码时:

library('Hmisc')
# Please find the "data.log" file in http://pastie.org/7943338
data = read.table("data.log", col.names=c('DAY','PERIOD','UID','NUMBER'), colClasses=c("UID"="character"))
attach(data)
a = summarize(NUMBER, llist(PERIOD, UID), smedian.hilow, na.rm=T)
detach(data)
xYplot(Cbind(NUMBER, Lower, Upper)~numericScale(UID)|factor(PERIOD), data = a)

返回这个图形:

我真正想要的是将 x 值绘制为字符,就好像 UID 是一个字符串标签一样,而不是它的数值,因为它们不是连续的,因此它们在 x 轴上的分布不均等。

我已经为实现这一目标做了很多努力,我已经看到有关因素(123)非数字轴(12)的示例,但是我没有成功寻找类似的东西。不是专门寻找某人来解决我的问题,因此,帮助我找到解决方案的示例、文档或技术的链接非常受欢迎。谢谢。

【问题讨论】:

  • 你能创建一个你想要的快速草图或模型吗?这将大大改善这个问题。另外,您愿意放弃“xYplot”功能吗? 'ggplot2' 或 'grid' 包更灵活,学习和实施可能比将 'xYplot' 修改成你想要的形状更省力。
  • @Dinre,是的,我要创建草图。是的,只要我能够满足我的需求,我愿意使用任何东西。感谢您向我推荐 ggplot2 和网格。

标签: r hmisc


【解决方案1】:

这里是使用ggplot2geom_pointrange 的解决方案:

library(ggplot2)
ggplot(data=a, aes(x     = factor(UID),
                   y     = NUMBER,
                   ymin  = Lower,
                   ymax  = Upper  )) +
  geom_pointrange() +
  facet_grid(PERIOD~.)

【讨论】:

  • 哦!这是惊人的! Dinre 建议我使用 ggplot2,我正在阅读文档。你的解决方案很漂亮,真的是我想要的!谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-01-20
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多