zoukankan      html  css  js  c++  java
  • Python绘图之matplotlib基本语法

      博客地址:http://www.cnblogs.com/yudanqu/
     
      Matplotlib 是一个 Python 的 2D绘图库,通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。当然他也是可以画出3D图形的,这时就需要安装更多的扩展。相比MATLAB来说,python不需要那么大的安装包,而且最重要的是开源的,在这方面python还是有一定的优势的。
     
    下面我将简单梳理一下matplotlib画图的方法,首先把本次需要用到的包导入进来:
    1 import numpy as np
    2 import pandas as pd
    3 import matplotlib.pyplot as plt
    4 from pandas import Series,DataFrame

    当然,在真正做事情时要根据自己的要求来导入,这里为了示例要导入numpy和pandas。

    1、一个简单案例来展示画图的基本命令

     1 x = np.linspace(0,2*np.pi,100) # 设置横轴变量,从0到2*pi,均分为100份
     2 y = np.sin(x) # 因变量取值
     3 
     4 plt.plot(x,y,'b*',label='aaa') # 'b*'表示蓝色*状线,label是指定义图例
     5 plt.plot(x*2,y,'r--',label='bbb') # 'r--'表示红色虚线,
     6 plt.xlabel('this is x') # 设置横轴标签
     7 plt.ylabel('this is y') # 设置纵轴标签
     8 plt.title('this is title') # 设置标题
     9 plt.legend() # 显示上面定义的图例
    10 plt.show() # 展示图像

    这样一个简单的绘图就出来了,这里面有两个图形,位于一块画布上,还介绍了一些标签的设置。

    2、子图

     1 plt.subplot(2,1,1) # 子图,(2,1,1)代表,创建2*1的画布,并且定位于画布1 ;等效于plt.subplot(211),即去掉逗号
     2 
     3 a = plt.subplots() # 返回两个对象 figure ax
     4 figure,ax = plt.subplots()
     5 ax.plot([1,2,3,4,5])
     6 plt.show() # 显示图像
     7 
     8 # subplots可以传入参数,几行几列
     9 figure,ax = plt.subplots(2,2)
    10 # figure 显示画布,分成2*2的
    11 ax[0][0].plot(x,y)
    12 ax[0][1].plot(x*2,y*2) # 可以分别绘图

    3、pandas--Series绘图

    先介绍几个常用的参数:

    • plot参数:kind:图像显示的方法,包括'line''bar''barh''hist''box''kde''density''area''pie'.
    • grid=True 表示显示背景的网格
    • label='str',参数里写这个,输出图像之前要协一个plt.legend(),显示图例
    • title='str',显示标题
    • style='--',显示为虚线

    plt.legend() # 显示图例,这个上面提到过,没有这个,设置了图例也是不会显示出来的

    1 # 这是一个小栗子
    2 s1 = Series(np.random.randint(1000).cumsum()) # 创建series,cumsum()是指叠加求和,本位数是前几项之和
    3 s1.plot() # series有自己的plot函数,里面可以写入想要的参数

    4、pandas--DataFrame绘图

    1 df = DataFrame(
    2     np.random.randint(1,10,40).reshape(10,4),
    3     columns=['A','B','C','D']
    4     )
    5 df.plot() # dataframe也有自己的plot,按列画出来,参数包含ax,选择输出的画布
    6 # 参数:stacked=True,表示一个堆叠的情况,同一个index下,columns一不同颜色叠在一起

    1、可以取其一行或几行来画图,即将dataftame横过来画:
    一行:df.iloc[5].plot() # iloc是pandas里面的一个可以说是切片的命令
    多行或全部:for i in df.index:
            df.iloc[i].plot(label=str[i])
            plt.legend()
    2、对列画图:
    df['A'].plot()

    3、对行绘图还有简便方法:
    就是对df进行转置,然后再plot ,df.T.plot()

    5、直方图和密度图

    1 # 直方图
    2 s = Series(np.random.randn(1000))
    3 plt.hist(s,rwidth=0.9) # 直方图,rwidth为设置宽度
    4 plt.show()
    5 # hist()的参数:rwidth为宽度;bins=20表示显示的区间,默认是10份;color='r'设置颜色;
    1 # 密度图
    2 s.plot(kind='kde') # kind='kde'即表示密度图

      今天就大概先总结这些,博主也是初学者,如有不足,请多多指教,希望可以给一些朋友带来帮助,如若觉得我说的太少了,可以查看官方文档https://matplotlib.org/。

      作者:渔单渠

      博客地址:http://www.cnblogs.com/yudanqu/

    作者:渔单渠 微信搜索“小田学Python”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    掌上风云
    骗子太多傻子不够用了
    关于WP7的一点想法
    诺基亚的抉择
    Windows Embedded Compact 7 试用笔记(3)
    Windows Embedded Compact 试用笔记(2)——系统定制
    重开博客
    结构体的嵌套问题
    Delphi 2010 新增功能之: IOUtils 单元(1): 初识 TDirectory.GetFiles
    TImage、TPaintBox、TPicture、TBitmap、TCanvas、TGraphic 的关系与区别
  • 原文地址:https://www.cnblogs.com/yudanqu/p/9018052.html
Copyright © 2011-2022 走看看