博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三、绘图和可视化之matplotlib
阅读量:4923 次
发布时间:2019-06-11

本文共 5262 字,大约阅读时间需要 17 分钟。

#matplotlib简单绘图之plot

 

import matplotlib.pyplot as plta=[1,2,3]b=[10,2,30]plt.plot(a)#纵坐标为a的值,横坐标为a的index,即0:1,1:2,2:3plt.show()%matplotlib inline#上句为jupyter中的魔法函数,不需要plt.show(),只要运行plt.plot(a,b)就会出图,在别的编译器中无法使用plt.plot(a,b)

  结果:

   

    [<matplotlib.lines.Line2D at 0x8b0ae48>]

    

%timeit np.arange(10)#计算出该语句的执行时间#669 ns ± 14.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

  

plt.plot(a,b,'*')

  结果:

    [<matplotlib.lines.Line2D at 0x9d45940>]

    

plt.plot(a,b,'--')plt.plot(a,'*--')

  结果:

    [<matplotlib.lines.Line2D at 0x9e28518>]

    

plt.plot(a,b,'r--')#改变颜色plt.plot(a,'b--')

  结果:

    [<matplotlib.lines.Line2D at 0x890bcc0>]

    

c=[4,8,3]d=[12,19,0]plt.plot(a,b,c,d)

  结果:

    [<matplotlib.lines.Line2D at 0xa368ac8>

    <matplotlib.lines.Line2D at 0xa368c88>]

    

plt.plot(a,b,'r--',c,d,'b--*')plt.xlabel('this is x')plt.ylabel('this is y')

  结果:

    Text(0,0.5,'this is y')

     

import matplotlib.pyplot as pltimport numpy as npx=np.linspace(0,2*np.pi,100)print(x.size)#查看x的长度y=np.sin(x)print(np.pi)plt.plot(x,y,'--')plt.xlabel('this is x')plt.ylabel('this is y')plt.title('this is demo')#标题plt.show()

  结果:

    100          3.141592653589793

    

c=[4,8,3]d=[12,19,0]plt.plot(a,b,label='aaaa')plt.plot(c,d,label='bbbb')plt.legend()#图例

  结果:

    <matplotlib.legend.Legend at 0x8899b38>

    

 

 matplotlib简单绘图之subplot

import numpy as npimport matplotlib.pyplot as pltx=np.linspace(0.0,5.0)y1=np.sin(np.pi*x)y2=np.sin(np.pi*2*x)#回顾plot功能plt.plot(x,y1,'b--',label='sin(pi*x)')plt.plot(x,y2,'r--*',label='sin(pi*2x)')plt.ylabel('y value')plt.xlabel('x value')plt.title('this is x-y value')plt.legend()plt.show()

  结果:

plt.subplot(2,2,1)#生成一个2行2列的subplot,这是第一个子图,位于第一行第一列plt.plot(x,y1,'b--')plt.ylabel('y1')plt.subplot(222)#这是第二个子图,位于第一行第二列,plt.subplot(2,2,2),两种书写方式plt.plot(x,y2,'r--')plt.ylabel('y2')plt.subplot(2,2,3)#这是第三个子图,位于第二行第一列plt.plot(x,y1,'b*')plt.xlabel('x')plt.show()

  结果:

    

figure,ax=plt.subplots()print('ax:',ax)print('type(ax):',type(ax))ax.plot([1,2,3,4,5])plt.show()

  结果:

    ax: AxesSubplot(0.125,0.125;0.775x0.755)

    type(ax): <class 'matplotlib.axes._subplots.AxesSubplot'>

    

figure,ax=plt.subplots(2,2)print('ax:',ax)print('type(ax):',type(ax))ax[0][0].plot(x,y1)ax[0][1].plot(x,y2)plt.show()

  结果:

    ax: [[<matplotlib.axes._subplots.AxesSubplot object at 0x0000000009D2B320>

        <matplotlib.axes._subplots.AxesSubplot object at 0x0000000009E1FE10>]

       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000000009C621D0>

     
]]       type(ax):
    

 Pandas绘图之Series

import numpy as npimport pandas as pdimport matplotlib.pyplot as plts=pd.Series([1,2,3,4,5])print(s.cumsum())#求每一步累加的和

  结果:

0     11     32     63    104    15dtype: int64
View Code
import numpy as npimport pandas as pdimport matplotlib.pyplot as plts1=pd.Series(np.random.randn(100)).cumsum()s2=pd.Series(np.random.randn(100)).cumsum()s1.plot(kind='line',grid=True,label='S1',title='this is Series',style='--')#line表示折线图(线性图),grid代表网格s2.plot(label='S2')plt.legend()plt.show()

  结果:

    

fig,ax=plt.subplots(2,1)print(ax)ax[0].plot(s1)ax[1].plot(s2)plt.show()

  结果:

    [<matplotlib.axes._subplots.AxesSubplot object at 0x000000000920EEF0>

     <matplotlib.axes._subplots.AxesSubplot object at 0x00000000092762E8>]

     
fig,ax=plt.subplots(2,1)s1.plot(ax=ax[0],label='s1')s2.plot(ax=ax[1],label='s2')plt.legend()plt.show()

  结果:

    

fig,ax=plt.subplots(2,1)s1[0:10].plot(ax=ax[0],label='s1',style='*',kind='bar')s2.plot(ax=ax[1],label='s2')plt.legend()plt.show()

  结果:

    

 

Pandas绘图之DataFrame

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltdf=pd.DataFrame(np.random.randint(1,10,40).reshape(10,4),columns=['A','B','C','D'])print(df)df.plot()#线形图df.plot(kind='bar')#竖向柱形图df.plot(kind='barh')#横向柱形图df.plot(kind='bar',stacked=True)#堆叠形式显示的柱形图df.plot(kind='area')#填充的线形图plt.show()

  结果:  

A  B  C  D0  8  2  6  91  3  3  7  62  2  9  3  63  3  6  1  14  7  4  3  85  1  4  4  36  9  9  1  67  6  3  2  68  4  7  9  29  7  3  9  5
 
 
 
 
 
#画出第五行a=df.iloc[5]#取第五行print(a)print(type(a))#Seriesdf.iloc[5].plot()# plt.plot(a)与上式相同plt.show()

  结果:

A    1B    4C    4D    3Name: 5, dtype: int32
 
#画出每一行for i in df.index:    df.iloc[i].plot(label=str(i))plt.legend()plt.show()

  结果:

# 画出第二列print(df['B'])df['B'].plot()plt.show()

  结果:

0    21    32    93    64    45    46    97    38    79    3Name: B, dtype: int32
 
#画出每一列df.plot()#默认情况下为每一列的图,省去使用for循环plt.show()

  结果:

#为了方便的画出每一行数据,省去使用for循环,可以通过转置df.T.plot()plt.show()

  结果:

 

matplotlib里的直方图和密度图

直方图

import numpy as npimport pandas as pdimport matplotlib.pyplot as plta=np.arange(10)plt.hist(a,rwidth=0.9)#设置宽度为0.9plt.show()

  结果:

s=pd.Series(np.random.randn(1000))plt.hist(s,bins=20)#分割区间设置为20plt.show()

  结果:

re=plt.hist(s,rwidth=0.9,color='r')#颜色设置为红色print(type(re),len(re))#tuple,3print(re[0])#代表的式频率,即指出现的次数print(re[1])#取值间隔print(re[2])#10个矩形plt.show()

  结果:

3[ 7. 34. 75. 156. 224. 230. 168. 81. 18. 7.][-3.08627663 -2.45951704 -1.83275744 -1.20599785 -0.57923826 0.04752134 0.67428093 1.30104052 1.92780012 2.55455971 3.1813193 ]
 
 
线形图
#线形图s.plot()#默认为线形图plt.show()

  结果:

 

密度图

#密度图s.plot(kind='kde')plt.show()

  结果:

 

 

 

 

 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/tianqizhi/p/8793320.html

你可能感兴趣的文章
cmd(或者说DOS窗口)输出内容到文件
查看>>
matlab之sub2ind()函数
查看>>
弹出窗
查看>>
mysql 链接报 Can't connect to MySQL server on 'localhost' (10061)
查看>>
hdu 4288 Coder(单点操作,查询)
查看>>
HDU 4760 Good FireWall 完好Trie题解
查看>>
HDU 2037 今年暑假不AC (贪心)
查看>>
ARM架构和编程-4
查看>>
大北农路:翻转,花钱免灾
查看>>
问题:DataGrid该行并不总是很清楚验证错误(删除),解决方案,如下面
查看>>
JAVA修饰符类型(public,protected,private,friendly)
查看>>
C语言默认參数值的实现
查看>>
docker 技术
查看>>
javascript挑战编程技能-第二题:计算字符数
查看>>
osgEarth编译
查看>>
win10与linux双系统切换时间不一致的调整
查看>>
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)...
查看>>
Enum Binding ItemsSource In WPF
查看>>
Javaweb 实现一个简单留言板
查看>>
UIP协议栈
查看>>