Python 第三方模块 绘图 Matplotlib模块 绘图1(线图,散点图,柱状图,条形图)

1.绘制线图:
其他属性参考:
https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D

matplotlib.pyplot.plot([<x>,]<y>[,<fmt>,**kwargs])
  #参数说明:fmt详情参见MATLAB plot()
    x:指定x坐标数据;为数组/标量;默认为range(len(y))
    y:指定y坐标数据;为数组/标量
    fmt:指定格式,包括标记/线条/颜色3部分(部分值见下图3~8);str
      格式:"[<marker><line><color>]";可只指定1/2部分,顺序可任意
    kwargs:指定其他属性(部分属性见下图2)

#实例:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> x=np.arange(-2*np.pi,2*np.pi,0.01)
>>> y=np.sin(3*x)/x
>>> plt.title('线性图示例')
Text(0.5, 1.0, '线性图示例')
>>> plt.xlabel('x 轴')
Text(0.5, 0, 'x 轴')
>>> plt.ylabel('y 轴')
Text(0, 0.5, 'y 轴')
>>> plt.plot(x, y)
[<matplotlib.lines.Line2D object at 0x00000273857F2B88>]
>>> plt.show()#结果见下图1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

要在同一张画布上绘制多个线图,只需要多次调用plt.plot()
  #不同线性图的颜色不同,如果不手动指定,系统会随机选择

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> x=np.arange(-2*np.pi,2*np.pi,0.01)
>>> y1=np.sin(3*x)/x
>>> y2=np.sin(2*x)/x
>>> y3=np.sin(1*x)/x
>>> plt.title('多数据线性图示例')
Text(0.5, 1.0, '多数据线性图示例')
>>> plt.xlabel('x 轴')
Text(0.5, 0, 'x 轴')
>>> plt.ylabel('y 轴')
Text(0, 0.5, 'y 轴')
>>> plt.plot(x,y1)
[<matplotlib.lines.Line2D object at 0x00000273859B5D08>]
>>> plt.plot(x,y2)
[<matplotlib.lines.Line2D object at 0x00000273859E0F48>]
>>> plt.plot(x,y3)
[<matplotlib.lines.Line2D object at 0x00000273859FFF08>]
>>> plt.show()#结果见下图1

在这里插入图片描述

>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> x1=np.arange(-2*np.pi,2*np.pi,0.01)
>>> y1=np.sin(3*x1)/x1
>>> y2=np.sin(2*x1)/x1
>>> x3=np.arange(-2*np.pi,2*np.pi,2)
>>> y3=np.array([0,2,1.5,1,2.4,-0.2,1.7])
>>> plt.title('线性图自定义样式示例')
Text(0.5, 1.0, '线性图自定义样式示例')
>>> plt.xlabel('x 轴')
Text(0.5, 0, 'x 轴')
>>> plt.ylabel('y 轴')
Text(0, 0.5, 'y 轴')
>>> plt.plot(x1,y1,'--r',label='x1,y1')#线条为"--",颜色为"r"(红)
[<matplotlib.lines.Line2D object at 0x000001AA57952B88>]
>>> plt.plot(x1,y2,color='green',label='x1,y2')#颜色为"green"(绿)
[<matplotlib.lines.Line2D object at 0x000001AA584A7448>]
>>> plt.plot(x3,y3,marker='o',mfc='r',linestyle=':',label='x3,y3')#标记为"o",颜色为"r"(红),线条为":"
[<matplotlib.lines.Line2D object at 0x000001AA556DFB48>]
>>> plt.legend(edgecolor='#87A3CC', facecolor='#F5F5F5')#设置图例
<matplotlib.legend.Legend object at 0x000001AA584C5508>
>>> plt.show()#结果见下图2

在这里插入图片描述
2.绘制散点图:

matplotlib.pyplot.scatter(<x>,<y>[,s=None,c=None,marker=None,cmap=None,alpha=None,linewidths=None,edgecolors=None,**kwargs])
  #参数说明:kwargs同plt.plot();None表示默认值由全局配置决定
    x,y:指定数据点的x,y坐标;为数组/标量
    s:指定标记的大小,单位为磅
      默认值为rcParams['lines.markersize']**2,6**2=36
    c:指定标记的颜色;为单一颜色或颜色列表
      支持英文颜色名称(str)/颜色名称的简写(str)/16进制颜色码/float数组(需要指定cmap)等
    marker:指定标记样式;具体样式同plt.plot()
      默认值为rcParams["scatter.marker"]='o'
    cmap:指定颜色映射表(float映射成颜色);可为即Colormap实例/注册的颜色表名
      #仅当c是float数组时才需指定该参数
    alpha:指定标记的透明度;float,范围为[0,1]
      默认值为1.0(完全不透明)
    linewidths:指定标记边缘的线宽
      默认值为rcParams["lines.linewidth"]=1.5
    edgecolors:指定标记边缘的颜色;详情同参数c

#实例:
>> import numpy as np
>> import matplotlib.pyplot as plt
>> x=np.arange(0,10,1)
>> y=np.array([3,8,1,5,7,2,3,4,5,7])
>> plt.scatter(x,y)
>> plt.show()#结果见下图

在这里插入图片描述

要在同一张画布上绘制多个散点图,只需要多次调用plt.scatter()
  #不同散点图的颜色不同,如果不手动指定,系统会随机选择

#实例:
>> import numpy as np
>> import matplotlib.pyplot as plt
>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>> x=np.arange(-2*np.pi,2*np.pi,1)
>> y1=np.sin(3*x)/x
>> y2=np.sin(2*x)/x
>> y3=np.sin(1*x)/x
>> plt.title('多数据散点图示例')
>> plt.xlabel('x 轴')
>> plt.ylabel('y 轴')
>> plt.scatter(x,y1)
>> plt.scatter(x,y2)
>> plt.scatter(x,y3)
>> plt.show()#结果见下图

在这里插入图片描述

利用numpy.random.rand()生成随机数据,来绘制随机数据散点图

#实例:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> N=1000
>>> x=np.random.randn(N)
>>> y=np.random.randn(N)
>>> plt.title('散点图随机数据示例')
Text(0.5, 1.0, '散点图随机数据示例')
>>> plt.xlabel('x 轴')
Text(0.5, 0, 'x 轴')
>>> plt.ylabel('y 轴')
Text(0, 0.5, 'y 轴')
>>> plt.scatter(x,y,alpha=0.5)
<matplotlib.collections.PathCollection object at 0x0000013F979B5608>
>>> plt.show()#结果见下图

在这里插入图片描述
3.绘制柱状图:

matplotlib.pyplot.bar(<x>,<height>[,width=0.8,bottom=0,align='center',**kwargs])
  #参数说明:bottom同.hist()
    x:指定每个矩形的x坐标;为数组
    height:指定每个矩形的y坐标(高度);为数组
    width:指定每个矩形的宽度;为标量/数组;默认为0.8
      #柱状图的矩形宽度没有统计学意义,只是视觉效果
    align:指定矩形与x坐标刻度对应的位置;可为"center"(默认值)/"edge"(左边缘)
    kwargs:指定其他参数(见下图)

在这里插入图片描述
在这里插入图片描述

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
x=[1,2,3,4,5]
height=[5,7,4,3,1]
tick_label=['A','B','C','D','E']
#设置颜色序列:
color=['red','yellow','peru','orchid','deepskyblue']
#绘制柱状图,边缘线宽度为1,颜色为黑色,样式为"--":
plt.bar(x,height,tick_label=tick_label,color=color,edgecolor='k',linewidth=1,linestyle='--')
plt.title('简单柱状图示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.show()

在这里插入图片描述

绘制多序列的柱状图:
1.指定1个较小的宽度值(等于偏移量)
2.多次调用matplotlib.pyplot.bar()
3.绘制不同数据集时设置不同的x坐标(+n*width)

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> x=np.arange(5)
>>> height1=np.array([5,7,4,3,2])
>>> height2=np.array([2,4,6,7,3])
>>> height3=np.array([3,1,7,5,2])
>>> #设置宽度值(偏移量)
... width=0.3
>>> #绘制不同数据时,x轴依次增加1个偏移量
... plt.bar(x,height1,width,label='bar1')
<BarContainer object of 5 artists>
>>> plt.bar(x+width,height2,width,label='bar2')
<BarContainer object of 5 artists>
>>> plt.bar(x+width*2,height3,width,label='bar3')
<BarContainer object of 5 artists>
>>> #设置x轴刻度的标签
... plt.xticks(x+width,['A','B','C','D','E'])
([<matplotlib.axis.XTick object at 0x0000021D423EB248>, <matplotlib.axis.XTick object at 0x0000021D423EB208>, <matplotlib.axis.XTick object at 0x0000021D42561708>, <matplotlib.axis.XTick object at 0x0000021D425BAA08>, <matplotlib.axis.XTick object at 0x0000021D425BD288>], [Text(0, 0, 'A'), Text(0, 0, 'B'), Text(0, 0, 'C'), Text(0, 0, 'D'), Text(0, 0, 'E')])
>>> plt.title('多序列柱状图示例')
Text(0.5, 1.0, '多序列柱状图示例')
>>> plt.xlabel('x axis label')
Text(0.5, 0, 'x axis label')
>>> plt.ylabel('y axis label')
Text(0, 0.5, 'y axis label')
>>> plt.legend()
<matplotlib.legend.Legend object at 0x0000021D425BDD08>
>>> plt.show()#结果见下图

在这里插入图片描述

绘制堆积的柱状图:
1.需要改变bottom:1个数据集data1的基线设为02个数据集data2的基线设在data1上方,即bottom=data1,3个数据集data3的基线设在data1+data2上方,即bottom=data1+data2
  之后各数据集以此类推
2.多次调用matplotlib.pyplot.bar()

>> import numpy as np
>> import matplotlib.pyplot as plt
>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>> x=np.arange(5)
>> height1=np.array([5,7,4,3,2])
>> height2=np.array([2,4,6,7,3])
>> height3=np.array([3,1,7,5,2])
>> plt.bar(x,height1,label='bar1')
>> plt.bar(x,height2,label='bar2',bottom=height1)
>> plt.bar(x,height3,label='bar3',bottom=(height2+height1))
>> plt.xticks(x,['A','B','C','D','E'])
>> plt.title('堆积的柱状图示例')
>> plt.xlabel('x axis label')
>> plt.ylabel('y axis label')
>> plt.legend()
>> plt.show()

在这里插入图片描述
4.绘制条形图(水平排列的柱状图):

matplotlib.pyplot.barh(<y>,<width>[,height=0.8,left=0,align="center",**kwargs])
  #参数说明:None表示默认值由全局配置决定
    y:对应.bar()中的x
    width:对应.bar()中的height
    height:对应.bar()中的width
    left:指定x轴的起始位置,对应.bar()中的bottom;默认为0
    align:指定矩形与y坐标刻度对应的位置;可为"center"(默认值)/"edge"(底边)
    kwargs:指定其他参数(见下图)

在这里插入图片描述
在这里插入图片描述

>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> y=[1,2,3,4,5]
>>> width=[5,7,4,3,1]
>>> tick_label=['A','B','C','D','E']
>>> color=['red','yellow','peru','orchid','deepskyblue']
>>> plt.barh(y,width,tick_label=tick_label,color=color,edgecolor='k',linewidth=1,linestyle='--')
<BarContainer object of 5 artists>
>>> plt.title('简单条形图示例')
Text(0.5, 1.0, '简单条形图示例')
>>> plt.xlabel('x axis label')
Text(0.5, 0, 'x axis label')
>>> plt.ylabel('y axis label')
Text(0, 0.5, 'y axis label')
>>> plt.show()#结果见下图

在这里插入图片描述

多序列和堆积的条形图的绘制类似多序列和堆积的柱状图
差别只在于图像旋转了90°,因而x/y坐标需要对换
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值