R中同一图上相同比例的两个y轴

时间:2018-05-16 18:45:24

标签: r ggplot2 statistics

我目前正在尝试重现一个如下图: VIP vales vs. weighted sum of absolute regression coefficients vs masses

忽略右侧的刻度尺,图表上有两个y轴。 X是VIP分数,y标度由绝对回归系数的加权和确定,但是该标度不可见,并且在左侧y轴上看到质量。在这种情况下,质量是分类变量,它们匹配绝对回归系数的加权和的连续变量中的每个值。

我的问题是我如何使用ggplot2或其他R包来重现这个?使用ggrepel直接标记点不是一个选项,因为我的数据集中有太多的质量。有没有办法用两个y轴创建散点图但是第二个y轴是一个分类变量?

示例数据:

        Masses      Overall        VIP1      
1     82.07010  38.26669006 1.484957089
2     84.08570  34.22745192 1.328724766 
3     95.08570  38.65684978 1.500047945
4     96.08571  13.13685100 0.512968559
5     98.10140  36.07639404 1.400239372
6     99.04410  17.37079280 0.676731759
7    105.07530   9.38047849 0.367677099 
8    110.10130  36.66816959 1.423128458
9    111.10160  13.64197654 0.532506138
10   113.06040  10.09391101 0.395271714

1 个答案:

答案 0 :(得分:0)

这看起来很可怕,但这正是你所要求的。调用您的数据dd

ggplot(dd, aes(x = VIP1, y = Overall)) +
    geom_point() +
    scale_y_continuous(breaks = dd$Overall, labels = dd$Masses)

enter image description here

我们使用scale_y_continuous因为您想要定义y轴位置的变量Overall是连续的。

使用此数据:

dd = read.table(text = "        Masses      Overall        VIP1      
1     82.07010  38.26669006 1.484957089
2     84.08570  34.22745192 1.328724766 
3     95.08570  38.65684978 1.500047945
4     96.08571  13.13685100 0.512968559
5     98.10140  36.07639404 1.400239372
6     99.04410  17.37079280 0.676731759
7    105.07530   9.38047849 0.367677099 
8    110.10130  36.66816959 1.423128458
9    111.10160  13.64197654 0.532506138
10   113.06040  10.09391101 0.395271714", header = TRUE)