首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对数刻度y轴上的两个数据集和带有标题的次轴上的另一个数据集

对数刻度y轴上的两个数据集和带有标题的次轴上的另一个数据集
EN

Stack Overflow用户
提问于 2019-06-04 03:01:39
回答 1查看 0关注 0票数 0

我想在log10scale绘制左Y轴上的A和B列,以及在正常刻度上绘制右轴上的C列。X轴将是我数据的第一列Time

我的数据是:

# A tibble: 7 x 4
     Time       A     B     C
    <dbl>   <dbl> <dbl> <dbl>
        1   33046   196  0.81
        2  970250   578  0.94
        3 1870125   323  2.31
        4  259625   509 12.20
        5 3838750   215 11.50
        6  962333  5437  4.70
        7 2272917 41028 10.10

我试过了:

plot(data$Time, data$A, type = "l",  xlim = NULL, ylim = NULL,
     log = "y", main = "Title", xlab = "Time", ylab = "copies", col= "blue")
par(new = TRUE)
plot(data$Time, data$B, type = "l",  xlim = NULL, ylim = NULL,
     log = "y", main = "", xlab = "", ylab = "", col= "green", add=TRUE)
par(new = TRUE)
plot(data$C, type = "l", xaxt = "n", yaxt = "n",
     ylab = "", xlab = "", col = "red", lty = 2, )
axis(side = 4)
mtext("secondary axis", side = 4, line = 3)
legend("topleft", c("A", "B", "C"),
       col = c("blue", "green", "red"), lty = c(1, 2)) 
  • 如何在y1上以对数刻度(10 ^ 2-10 ^ 6)绘制A和B两者而不重叠?
  • 如何添加y2轴标题?

这是我使用上面代码得到的图表:

在此输入图像描述
在此输入图像描述
EN

回答 1

Stack Overflow用户

发布于 2019-06-04 12:56:45

您需要为两个图指定相同的限制才能使用相同的轴。这就是为什么我ylim = c(100,10000000)在这两个情节中都有。

您需要定义适当的边距并绘制边界以便能够显示所有内容。这是什么par(mar = c(5,4,4,4) + 0.1)

legend您需要为所有跟踪指定线型; 所以,lty = c(1, 2)是不对的,因为在B虚线中使痕迹在图例C中破灭。我用lty = c(1, 1, 2)它了。

另外,我用col="red"mtext要清楚的是次级轴是C,这也是在red

data <- structure(list(Time = 1:7, 
                          A = c(33046, 970250, 1870125, 259625, 3838750, 962333, 2272917), 
                          B = c(196, 578, 323, 509, 215, 5437, 41028), 
                          C = c(0.81, 0.94, 2.31, 12.2, 11.5, 4.7, 10.1)), 
                  row.names = c(NA, -7L), 
                  class = c("tbl_df", "tbl", "data.frame"))

opar <- par(mar = c(5,4,4,4) + 0.1)

plot(data$Time, data$A, type = "l",  xlim = NULL, ylim = c(100,10000000),
     log = "y", main = "Title", xlab = "Time", ylab = "copies", col= "blue")

par(new = TRUE)
plot(data$Time, data$B, type = "l",  xlim = NULL, ylim = c(100,10000000),
     log = "y", main = "", xlab = "", ylab = "", col= "green")

par(new = TRUE)
plot(data$C, type = "l", xaxt = "n", yaxt = "n",
     ylab = "", xlab = "", col = "red", lty = 2, )
axis(side = 4)

mtext("secondary axis", side = 4, line = 3, col="red")
legend("topleft", c("A", "B", "C"),
       col = c("blue", "green", "red"), lty = c(1, 1, 2)) 
par(opar)

reprex包创建于2019-06-03 (v0.3.0)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档