美文网首页
R语言绘图之双坐标轴实例

R语言绘图之双坐标轴实例

作者: 采星星的小太阳BavaLI | 来源:发表于2020-05-16 20:43 被阅读0次

    前面的博客我们详细介绍了plot()函数的使用即折线图的绘制,尤其是plot()函数他很关键,很重要,如果您不了解,那么你可能不知道我再说什么。

    注:需要数据的可以发简信找我要,,,,,,,,

    #加载数据集
        library(readxl)
        stock = read_excel("./stock.xlsx")
    

    实验一 : 一个图像显示随着时间变化,收盘价和股民的信心指数的变化趋势

    先来一个错误的绘图实例:

    plot(stock$date
              ,stock$SH_closing_price
              ,type='l')
    #你会发现lines并没有绘制上去
         lines(stock$date
               ,stock$investor_confidence_index
               ,lty=2)
    

    你会发现lines并没有绘制上去

    image.png

    怎么回事呢?还记得range函数嘛?我们来查看一下x,y的范围看一看!

    
    
    image.png

    原因就是x,y相差太大了,接下来我们叫解决这个问题!

    解决方案1,调整y轴的刻度

        plot(stock$date
             ,stock$SH_closing_price
             ,type="l"
             ,ylim=c(20,50000))
    
        lines(stock$date
              ,stock$investor_confidence_index
              ,lty=2)
    
    image.png

    图现在倒是绘制上去了,但是聪明的你马上就发现问题

          #产生的问题,本身信心指数是有波动的
          #收盘价也是有波动的,经过放大比例尺,导致原先有波动的数据,也看不出来
          #失去了数据的原有价值,容易给别人造成歧义
    

    解决方案二,绘制子图,但是你又会发现问题:对比性不强

    
            par(mfrow=c(1,2))
    
        plot(stock$date
             ,stock$SH_closing_price
             ,type="l"
             ,xlab="时间"
             ,ylab = "上证指数收盘价")
    
        plot(stock$date
             ,stock$investor_confidence_index
             ,type="l"
             ,xlab="时间"
             ,ylab = "投资者的信心指数")
    
    image.png

    解决方案三,绘制双坐标图
    查看边距
    首先我们来说说什么叫边距
    margin,其实来源于HTML,在R绘图里面也有边距的说法,我们用图片来说明一下。


    image.png

    这里我们就看到了上左下右的四个边距值


    image.png
    可见,右边的边距太窄了,要绘制双坐标轴,那么就要在右边加上刻度和lyab,由于右边的边距太小,所以我们一般要修改一下边距。不然看不到应有的绘图效果。

    修改margin

    image.png
    par(mar = c(5,4,4,4))#mar参数
    
        plot(stock$date
             ,stock$SH_closing_price
             ,type='l'
             ,sub="2020-02-02"
             ,xlab = "时间"
             ,ylab = "上证指数收盘价")
    
    image.png

    现在margin就基本差不多了!

    #设置全局参数
    par(new=T)#new=T 代表图像是可以覆盖的,也就是你可以在之前
    #的图像上面继续绘制图像
    plot(stock$date
         ,stock$investor_confidence_index
         ,type="l"
         ,lty = 2
         ,ann = F
         ,yaxt='n')#yaxt='n'代表禁止显示y轴刻度线,及这次绘制
    #的图像不会在显示y轴的刻度,避免重复
    axis(side = 4)#axis可以在4个方向添加轴线 (1:下,2:左,3:上,4:右)
    
    #mtext可以添加文本,side可以指定文本输出到哪个位置,line指定线条样式
    mtext(text = "投资者的信心指数"
          ,side = 4
          ,line = 3)
    #绘制legend图例
    legend("topright"
           ,legend = c("SH收盘价","信心指数")
           ,lty=c(1,2)
           ,bty="n"#bty 代表不显示图例的边框)
    
    image.png

    好啦,今天就到这里,可以说讲的很仔细了,大家慢慢悟吧,希望能帮助到爱学习的你们!如果可以,我很开心!如果想深入学习R,欢迎访问我的主页R专栏!

    相关文章

      网友评论

          本文标题:R语言绘图之双坐标轴实例

          本文链接:https://www.haomeiwen.com/subject/cjmrohtx.html