【问题标题】:Change x-axis intervals to be monthly in r将 x 轴间隔更改为 r 中的每月间隔
【发布时间】:2020-07-08 05:21:19
【问题描述】:

我有一个数据框,其中第一列名为“日期”。它的值类似于“2016-01-01、2016-01-02 ...”等。第二列名为“precipBulk”,它只有十进制值(例如 3.36、1.57 等)。第三列名为“丰度”,它也有十进制值。我想在一张图上同时绘制“丰度”和“沉淀块”(如图所示),但我希望 x 轴每个月都有间隔,而不是像现在这样每隔一个月。我知道有一种方法可以在 ggplot2 中使用“scale_x_date()”,但由于某种原因,我无法使用 ggplot2 在一个图中绘制两个 y 值。有没有办法在不使用 ggplot2 的情况下做到这一点?如果没有,关于如何使用 ggplot2 绘制双 y 轴以实现此目的的任何提示?

图表链接https://i.stack.imgur.com/SZXgT.png` 一小部分数据框https://i.stack.imgur.com/PvTED.png

为了制作图表,我做了:

x = frame$Date
y1 = frame$precipBulk
y2 = frame$abundance

plot(x,y1, type = "l",ylab="Bulk Precipitation",xlab="Month",col="blue", main = "Precipitation vs Mosquito Abundance (OSBS 2016)", cex.main = 1)
par(new = TRUE)
plot(x, y2, type = "l",yaxt="n",xaxt="n",ylab="",col="red")
axis(side = 4)
legend('topleft', c("Precipitation", "Mosquito Abundance"), col= c("blue", "Red"),lty=c(1,1), adj = c(0,0.6), cex= 0.75)

【问题讨论】:

  • 请不要发布代码/数据/错误的图像:它不能被复制或搜索 (SEO),它会破坏屏幕阅读器,并且它可能不适合某些移动设备。参考:meta.stackoverflow.com/a/285557(和xkcd.com/2116)。请直接包含代码、控制台输出或数据(例如,dput(head(x))data.frame(...))。

标签: r dataframe plot


【解决方案1】:

您需要关闭 x 轴(如您所做的那样),然后手动添加它,如有必要,可能会减小大小,以便轴刻度标签适合,否则,R 将为您决定。

x <- seq(as.Date("2017-01-01"), as.Date("2018-01-01"), "day")
plot(x, rnorm(length(x)), xaxt="n")
at <- seq(min(x), max(x), "month")
axis(side=1, at=at, labels=format(at, "%b"), cex.axis=0.7)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-19
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多