Две оси Y для одних и тех же данных - но разного масштаба - PullRequest
0 голосов
/ 26 июня 2018

Я создал график, представляющий данные в линейных единицах, но в логарифмической шкале Y (код ниже).

ggplot() + 
  geom_point(data=VH_lin, aes(x=VH_lin[,1], y=VH_lin[,2], colour = "green"), size=0.6) +
  scale_y_log10(breaks = c(0,0.01, 0.10, 1.00, 10), limit=c(-0.01,10)) + scale_x_continuous(breaks=c(0, 2000, 4000, 6000, 8000, 10000, 12000)) + 
  xlab("x") + ylab("y") +
  theme(panel.background = element_rect(fill = "white", colour = "grey50")) 

Я хотел бы добавить вторую шкалу y в децибелах - это логарифмические единицы. Чтобы преобразовать данные, мне нужно вычислить 10 * log10 (x), поэтому распределение данных на графике должно быть таким же - дБ логарифмичны. По сути, я хотел бы представить данные о даме на одном графике, используя две единицы: линейный (но представлен в логарифмическом масштабе - уже в коде) и дБ. Является ли это возможным? Картинка ниже (плохо) представляет мою идею.

enter image description here

Пример данных VH_lin:

1 0 0.012729834
2 3.133577295 0.012729834
10 14.75257582 0.013739633
36 59.10725461 0.014644137
41 69.42152155 0.0103109
466 1180.242805 0.011991354
486 1204.63381 0.008985861
520 1256.814223 0.008706877

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вы можете добавить вторую ось, сохраняя точки данных в исходном масштабе следующим образом:

ggData <- data.frame(x=rnorm(50), y=rnorm(50, mean=1000, sd=50) )
summary(ggData)

ggplot(ggData, aes(x=x, y=y) ) + 
 geom_point() + 
 scale_y_continuous(sec.axis = ~ 10*log10(.))
0 голосов
/ 26 июня 2018

Если вы хотите добавить вторую ось y в том же масштабе, что и предыдущий, это можно реализовать следующим образом: scale_y_log10(sec_axis = sec_axis(~.*, name="dB")

...