【问题标题】:Plotting line graph with factors in R用 R 中的因子绘制折线图
【发布时间】:2016-07-18 15:41:17
【问题描述】:

我正在用 R 处理这个图表:

但是,正如您所见,我得到的是这些实线破折号,而不是漂亮的线条。这是我用来制作此图表的代码:

par(mar = c(5,5,2,5))
    with(bedtimes, plot(trap, funestus, type="l", col="red3", 
                 ylab=expression(italic(p))),
                 ylim=c(0,3))  

    par(new = T)
    with(bedtimes, plot(trap, bed, pch=16, axes=F, xlab=NA, ylab=NA, cex=1.2))
    axis(side = 4)
    mtext(side = 4, line = 3, 'Proportion in bed')
    polygon(bedtimes$bed,col=transp("gray", 0.3), border = NA)

这是我正在使用的数据的输出:

(removed)

我意识到这是因为我的 x 轴是一个因素而不是数字。然而,试图改变这一点(例如,使用as.POSIXct(paste0("2016-07-12",bedtimes$trap)) 给我带来了各种各样的问题,因为我必须确保 R 最初使用 bedtimes$trap <- factor(bedtimes$trap, levels = bedtimes$trap) 以正确的顺序绘制了这些因素

如何生成同样的图表,但使用线条而不是这些破折号? 我最终想要一个看起来与此相似的图表,给你一个想法(虽然不完全相同):

谢谢!

【问题讨论】:

  • 尝试使用as.numeric(trap) = 级别编号而不是标签(如果你想要的是线条,也可以使用type="l" 而不是pch=16
  • 层数是指x轴上的时间吗?
  • 我的意思是 as.numeric(trap) 而不是 trap 然后你用 levels(trap) 标记你的轴

标签: r graph


【解决方案1】:

正如我在 cmets 中所说,您可以尝试使用因子变量的级别:

par(mar = c(5,5,2,5))
with(bedtimes, plot(as.numeric(trap), funestus, type="l", col="red3", 
                    ylab=expression(italic(p))),
                    ylim=c(0,3))  
par(new = T)
with(bedtimes, plot(as.numeric(trap), bed, type="l", axes=F, xlab="", ylab=NA, cex=1.2))
axis(4)
axis(side = 1, at=1:length(levels(bedtimes$trap)), levels(bedtimes$trap))
mtext(side = 4, line = 3, 'Proportion in bed')
polygon(bedtimes$bed,col="gray", border = NA)

【讨论】:

  • 谢谢,但这会删除左侧的 y 轴和我为 funestus 设置的线。我希望创建一个类似于示例图片中的图,其中包含两个 y 轴和单独的图
  • @SamuelHarper 抱歉,我只是没有采用您代码的第一部分。该图像不完全是您使用透明度参数所拥有的图像
  • 太好了,谢谢!如果我可以再问你一件事(这完全是可选的,因为你已经回答了我的问题!)我如何旋转我的轴标签以便它们更容易阅读?因为它们有点太长,无法水平放置。
  • 带参数 las ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
相关资源
最近更新 更多