首页 > 解决方案 > 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"))

标签: rggplot2plot

解决方案


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"))

ggplot2 绘图

(我对dftrans编队内部伸出援手并不完全兴奋,但在这种情况下它似乎无害。)

确实认为这违反了对原始数据的解释。也就是说,x1跨度从 48.5 到 59.7 和z从 -11.2 到 0,但图中指出z' 的范围与x10 到 59.7 的跨度相关联,因此关系的斜率被错误陈述。虽然我假设这些数据只是为了这个问题的样本数据,但我想知道是否存在对价值比较的错误表示的担忧。


推荐阅读