【问题标题】:For a graph with 2 y axis in R, how do I add the label to the second y-axis?对于 R 中具有 2 个 y 轴的图形,如何将标签添加到第二个 y 轴?
【发布时间】:2021-10-13 02:44:48
【问题描述】:

目标:我正在尝试制作一个图表,显示一个区域的水位随时间的变化,它有两个 y 轴(第一个是供水中的总百万升水,第二个是是大坝容量)。

问题:我的第二个 y 轴的标题格式不正确:它与 y 轴上的增量和值的左侧重叠。我想把它移到右边。

这是我的代码:

#data
years <- c(2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021)
levels <- c(646137, 450429, 279954, 190300, 191843, 411849, 481370, 626907)
percents <- c(71.9, 50.1, 31.2, 21.2, 21.4, 45.9, 53.6, 69.8)
allData <- data.frame(years, levels, percents)
levelsOverTime <- data.frame(years, levels)
percentsOverTime <- data.frame(years, percents)

#plot
plot(percentsOverTime, type="l", ylab="Water levels as percentages of dam capacity", main="Water Levels Over Time", xlab="Year", col="blue", ylim=c(0, 100))
par(new = TRUE)
plot(levelsOverTime, type="l", xaxt="n", yaxt="n", ylab="", xlab="", col="red", ylim=c(0, 650000))
axis(side = 4)
mtext("Total water stored in 6 major dams (megalitres)", side=4)

【问题讨论】:

    标签: r graph yaxis


    【解决方案1】:

    试试这个方法。您可以使用line = .更改文本位置

    par(mar = c(5, 4, 4, 6) + 0.1)
    plot(percentsOverTime, type="l", 
         main="Water Levels Over Time", xlab="", ylab = "", col="blue", ylim=c(0, 100), axes = FALSE)
    axis(2, ylim = c(0,100), col = "blue", las = 1)
    mtext("Water levels as percentages of dam capacity", side = 2, line = 2.5, col = "blue")
    box()
    par(new = TRUE)
    plot(levelsOverTime, type="l", xaxt="n", yaxt="n", ylab="", xlab="", col="red", ylim=c(0, 650000), 
         axes = FALSE)
    mtext("Total water stored in 6 major dams (megalitres)", side = 4, col = "red", line = 4)
    axis(4, ylim = c(0, 650000), col = "red", las = 1)
    
    axis(1, years)
    mtext("Year", side = 1, col = "black", line = 2.5)
    
    legend("bottomleft", legend = c("precents", "levels"),
           text.col = c("blue", "red"), col = c("black", "red"), lty = c(1,1))
    

    par(mar = c(5, 4, 4, 6) + 0.1)
    plot(percentsOverTime, type="l", 
         main="Water Levels Over Time", xlab="", ylab = "", col="blue", ylim=c(0, 100), axes = FALSE)
    axis(2, ylim = c(0,100), col = "blue", las = 1)
    mtext("Water levels as percentages of dam capacity", side = 2, line = 2.5, col = "blue")
    box()
    par(new = TRUE)
    plot(levelsOverTime, type="l", xaxt="n", yaxt="n", ylab="", xlab="", col="red", ylim=c(0, 650000), 
         axes = FALSE)
    mtext("Total water stored in 6 major dams (megalitres)", side = 4, col = "red", line = 4)
    ytick <- seq(0, 650000, by = 100000)
    axis(4, ylim = c(0, 650000), col = "red", las = 1, labels = format(ytick,scientific = FALSE), at = ytick)
    
    axis(1, years)
    mtext("Year", side = 1, col = "black", line = 2.5)
    
    legend("bottomleft", legend = c("precents", "levels"),
           text.col = c("blue", "red"), col = c("black", "red"), lty = c(1,1))
    

    【讨论】:

    • 非常感谢!这真的很有帮助。另一个问题:你知道我如何编辑第二个轴上的值,使它们不是科学计数法吗?
    • @M1r0W1gg1n 你可以使用labels = format(. , scientific = FALSE)at 来做到这一点。我添加上面的代码。
    猜你喜欢
    • 2012-04-26
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多