Два набора данных по шкале логарифмического ось Y и еще один на вторичной оси с заголовком - PullRequest
1 голос
/ 31 мая 2019

Я хотел бы построить столбцы A и B на левой оси Y на log10scale и столбец 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)) 
  • Как я могу построить как A, так и B в логарифмическом масштабе (10 ^ 2-10 ^ 6) на y1 без наложения?

  • Как добавить заголовок оси y2?

Это график, который я получил, используя код выше:

enter image description here

1 Ответ

0 голосов
/ 03 июня 2019

Необходимо указать одинаковые пределы для обоих графиков, чтобы они имели одинаковую ось.Вот почему у меня 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)

Создано в 2019-06-03 пакетом представительство (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...