暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python-54 Matplotlib库与pyplot

Rhonin晴朗台风天 2021-09-16
302

 Matplotlib库由各种可视化类构成,

import matplotlib.pyplot as plt(约定别名)







01



数据可视化工具




数据的可视化也是数据分析师必备技能之一,好的可视化是一图胜千言,它能很好地体现数据分析师的价值,让老板等人以最直观的方式了解公司状况,没有什么比一个内在非常美好的女生却因为外在不够美好而被错失更可惜。
不过有时候我会觉得可视化有点鸡肋,虽然我很欣赏,但却一直不太用心去学这部分。这种矛盾的缘由是怎么来的呢?主要因为我是业务出身,比起怎么把可视化做得漂漂亮亮,我自己会更喜欢从数据里看出点啥然后制定计划高效率验证从而获得业绩增长,鸡肋是因为需要在可视化上花很多时间去美化,而且这涉及到布局配色等等相对需要美学专业,而我在这块深造不多。
我以前有个老板这样说过,做会议总结的时候很多员工为了美观会在做PPT上花费过多时间,但真正有含金量的只有一两句话。所以当我熬夜调整整个版面的时候真的是深有感触。
至此之后,我对自己在可视化上总结了方向:核心点+极简+3色。关键是选取恰当的图形来展示数据含义
目前,很多会选择像Tableau、R、PowerBI、EXCL等这类工具,我主要学了PowerBI,因为这个和EXCL都是microsoft出品的,而且PP和PQ也能共用,还有两点是可以很自由调整视觉对象,同时发布手机也可以随时查阅数据,可惜数据大就容易卡,像比较热门的Tableau我没有接触就没有发言权了。
像比较基础的图表EXCL基本就可以搞定了,如果比较复杂或者想要炫酷叼炸天效果的,就移步其它更专业的工具。秉承邓小平的一句话:不管白猫黑猫,能抓老鼠就是好猫。




02




子绘图区域subplot和subplot2grid


subplot和subplot2grid都可以在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域,两者的区别是subplot是“直男”,它只能在井字格里直来直去,subplot2grid是“渣男”,它的本质是设定网格,选中网格来确定行列数量,也就是它可以有非常复杂绘图区域。

subplot:                                                    subplot2grid:

                        


1、plt.subplot(nrows,ncols,plot_number)

上述栗子:plt.subplot(3,2,4)或plt.subplot(324

2、plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)

上述栗子ax2=plt.subplot2grid((3,3)(1,0),colspan=2)

或  

    import matplotlib.gridspec as gridspec
    import matplotlib.pyplot as plt
    gs=gridspec.Gridspec(3,3)
    ax2=plt.subplot(gs[1,:-1]



    03




    plot函数


    一、plt.plot(x,y,format_string,**kwargs)

    1、x:x轴数据,列表或数组,可选。只输入一个列表或数组时,参数被当作Y轴,X轴以索引自动生成。

    2、y:y轴数据,列表或数组。有2个以上参数时,按照x轴和y轴顺序绘制数据点。

    3、format_string:控制曲线的格式字符串(由颜色字符、风格字符和标记字符组成),可选。——不用特意记,有需要的时候再翻出来用,虽然很多选择,但图表建议尽量简洁有力。


    4、**kwargs:第二组或更多(x,y,format_string),绘制多条曲线时,各曲线的x不能省略。

    控制颜色:color="green"

    线条风格:linestyle='dashed'

    标记风格:marker='o'

    标记颜色:markerfacecolor='blue'

    标记尺寸:markersize=20



    二、pyplot的文本显示函数

    plt.xlabel/.ylabel(‘轴名’,轴格式=)/.title(整体文本,斜体字$$)/.text(任意位置文本)/.annotate(内容,xy=(箭头),xytext(箭尾),arrowprops=dict(facecolor='箭色',shrink=0.1,width=2))/.axis([轴域])


    pyplot并不默认中文显示,

    1、需要rcParams修改字体

    matplotlib.rcParams['font.family(名字)/.style(normal/italic斜体)/.size(大小,整数)']='SimHei黑体/Kaiti楷体/LiSu隶书/FangSong仿宋/YouYuan幼圆/STSong华文宋体'

      import matplotlib
      matplotlib.rcParams['font.family']='SimHei'

      2、增加属性fontproperties


      三、plt.savefig(路径文件名,dpi=300),默认png


      四、plt.show()。如果你要保存文件,记得先保存文件再show,不然,你的图片就是一片空白。


        import matplotlib.pyplot as plt
        plt.plot([3,1,4,5,2])
        plt.ylabel('Grade')
        plt.savefig(r'C:\Users\Rhonin\Desktop\python练习\数据分析练习\\plot小试\test.jpg',dpi=200)
        plt.show()


        练习:

          import matplotlib.pyplot as plt
          plt.plot([0,2,4,6,8],[3,1,4,5,2],'r-.o')
          plt.axis([0,10,0,6])
          plt.ylabel('分数',fontproperties='SimHei',fontsize=20)
          import matplotlib
          matplotlib.rcParams['font.family']='SimHei'
          plt.xlabel('编号')
          plt.title('测试f(x)=y',fontsize=30)
          plt.annotate(r'$x=4$', xy=(4,4),xytext=(5,5),arrowprops=dict(facecolor='black',shrink=0.1,width=2))
          plt.show()





          04




          基础图表


          plt.plot(坐标)/.boxplot(箱形)/.bar(条形)/.barh(横条形)/.polar(极坐标)/.pie(饼)/.psd(功率谱密度)/.specgram(谱图)/.cohere(x-y相关性函数)/.scatter(散点,x=y)/.step(步阶)/.hist(直方)/.contour(等值)/.vlines(垂直)/.stem(柴火)/.plot_date(日期)

          练习:

            import matplotlib.pyplot as plt
            plt.pie([10,15,35,40],labels=('A','B','C','D'),explode=(0,0,0,0.1),\
            autopct='%1.1f%%',shadow=True,startangle=90)
            plt.show()



            更多图表设计可以参考matplotlib官网栗子,非常实用!

            https://matplotlib.org/stable/gallery/index.html


            tips:——总得会点心机婊的招数

            其实,我们平时可以选几种炫酷特别是excl做不出来的图练习一下,mark起来,以后在如年会总结之类关键时刻炫技,毕竟机会都是留给有准备的人的。






            文章转载自Rhonin晴朗台风天,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论