我想在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))
这是我使用上面代码得到的图表:
发布于 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)
https://stackoverflow.com/questions/-100006912
复制相似问题