r - 相同数据的两个 y 轴 - 但比例不同
问题描述
我创建了一个图表,以线性单位但以对数 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),因此绘图上的数据分布应该相同 - 因为 dB 是对数的。基本上,我想使用两个单位在同一个图上呈现 dame 数据:线性(但以对数刻度呈现 - 已经在代码中)和 dB。可能吗?下面的图片(差)展示了我的想法。
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
解决方案
您可以添加第二个轴,同时将数据点保持在原始比例,如下所示:
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(.))
推荐阅读
- java - 如何从 Java 中的 Callable Future 函数返回 Map
- c++ - Dijkstra 问题[UVa-10986 发送电子邮件]
- javascript - res.sendFile() 显示我的 html,但不呈现反应组件
- python - Pandas:如何填充大型数据集中的缺失值?
- javascript - 过滤器数组存在于对象数组中而不影响主数组
- python - 解码日文圆圈数字特殊字符
- detox - 排毒动画设置
- r - 如何在面板数据回归模型 (plm) 中添加仅随时间变化的变量?
- struct - 如何修改结构内的值(自动售货机的结构)
- python - 如何获得分组条形图?