r - ggplot 包的第二个 y 刻度
问题描述
我想用 start inz[1]
和 end in更改第二个 y 刻度的刻度z[17]
。下面我展示了一个带有数据集和ggplot
代码的 MWE
x1 x2 x3 x4 y z
59.72297 58.92972 61.34541 57.20393 (6.5,7] 0.0000000
59.03954 58.24224 60.67139 56.50889 (7,7.5] -0.6834285
58.35261 57.55155 59.99327 55.81127 (7.5,8] -1.3703668
57.66241 56.85789 59.31130 55.11136 (8,8.5] -2.0605641
56.96921 56.16153 58.62573 54.40941 (8.5,9] -2.7537648
56.27326 55.46274 57.93679 53.70571 (9,9.5] -3.4497086
55.57484 54.76178 57.24476 53.00053 (9.5,10] -4.1481307
54.87421 54.05892 56.54987 52.29415 (10,10.5] -4.8487626
54.17164 53.35445 55.85240 51.58685 (10.5,11] -5.5513324
53.46741 52.64863 55.15261 50.87892 (11,11.5] -6.2555650
52.76179 51.94176 54.45078 50.17063 (11.5,12] -6.9611827
52.05507 51.23411 53.74717 49.46227 (12,12.5] -7.6679055
51.34752 50.52596 53.04207 48.75413 (12.5,13] -8.3754518
50.63943 49.81760 52.33575 48.04649 (13,13.5] -9.0835386
49.93109 49.10932 51.62850 47.33963 (13.5,14] -9.7918820
49.22277 48.40139 50.92059 46.63384 (14,14.5] -10.5001978
48.51477 47.69410 50.21232 45.92939 (14.5,15] -11.2082017
p <- ggplot(data = df, aes(x = y, y = x1)) + geom_bar(stat="identity", fill="steelblue")
p + geom_line(data = df, mapping = aes(x = y, y = x1 + z, group = 1), size = 2, color = 'red') +
scale_y_continuous(name = "Axis 1", sec.axis = sec_axis(trans = ~. -59.72, name = "Axis 2"))
解决方案
p <- ggplot(data = df, aes(x = y, y = x1)) +
geom_bar(stat="identity", fill="steelblue")
p +
geom_line(data = df, mapping = aes(x = y, y = x1 + z, group = 1), size = 2, color = 'red') +
scale_y_continuous(name = "Axis 1",
sec.axis = sec_axis(trans = ~ approx(range(.), range(df$z), xout=.)$y,
name = "Axis 2"))
(我对df
从trans
编队内部伸出援手并不完全兴奋,但在这种情况下它似乎无害。)
我确实认为这违反了对原始数据的解释。也就是说,x1
跨度从 48.5 到 59.7 和z
从 -11.2 到 0,但图中指出z
' 的范围与x1
0 到 59.7 的跨度相关联,因此关系的斜率被错误陈述。虽然我假设这些数据只是为了这个问题的样本数据,但我想知道是否存在对价值比较的错误表示的担忧。
推荐阅读
- python - 我不明白为什么 Python 给我一个 np.darray 对象是不可调用的
- asp.net - 读取 API Json 数据
- javascript - 如何使用纯 JavaScript 将子元素包装在 div 中?
- java - Java 的 Integer.reverseBytes() 方法的 C# 等价物是什么?
- jenkins - 如何在 helm upgrade 命令中传递指向文件的指针?
- reactjs - 在 React Typescript 中创建自定义按钮并添加 onClick 事件
- oracle - Oracle SQL Developer - 找不到驱动程序类。供应商代码 0 与 xampp
- c# - 通过 MainWindow 使用 SerialPort 变量
- c - AF_XDP:尽管在 RX-Queue 0 上引导,但没有来自多播的数据包
- node.js - 使用 ASAR 构建后如何在电子中运行命令行