ximport matplotlib.pyplot as plt # 导入matplotlib库plt.rcParams['font.sans-serif']=['SimHei'] #图中文字体设置为黑体plt.rcParams['axes.unicode_minus']=False #负值显示
xxxxxxxxxx# 生成数据x = np.arange(0,6,0.1) #以0.1为单位,生成0到6的数据y = np.sin(x)# 绘制图形plt.plot(x,y)plt.show()
xxxxxxxxxx# 生成数据x = np.arange(0,6,0.1) #以0.1为单位,生成0到6的数据y1 = np.sin(x)y2 = np.cos(x)# 绘制图形plt.plot(x, y1, label = "sin") # 图例plt.plot(x, y2, label = "cos", linestyle = "--") # 用虚线绘制plt.xlabel("X") # x轴标签plt.ylabel("Y") # y轴标签plt.title("sin_cos") # 标题,有中文时图片不能直接展示plt.legend() # 显示图例plt.show()# 保存图表plt.savefig("./png/sin_cos.png")

xxxxxxxxxximport matplotlib.pyplot as pltimport numpy as np# 设置画布plt.figure(figsize=(8,6),dpi=100)# 获取坐标轴对象ax = plt.gca()# 设置坐标轴范围ax.set_xlim(-10,10)ax.set_ylim(-8,8)# 去掉右边框和上边框颜色ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')# 去掉左边框和下边框到中间ax.spines['left'].set_position(('data',0))ax.spines['bottom'].set_position(('data',0))# 数据x = np.arange(-10,10,0.1)y1 = np.sin(x)*5y2 = np.cos(x)*5# 绘制折线图plt.plot(x,y1,label="SIN")plt.plot(x,y2,label="COS")# 网络线plt.grid(True,linestyle='--',alpha=0.5)# 标题plt.title('SIN-COS',fontsize=18,color="red")# 指定位置添加文本plt.text(9.5,0.3,"x_axis",fontsize=14)plt.text(0.2,7,"y_axis",fontsize=14)plt.legend()plt.show()

导入库、中文乱码、在Jupyter Notebook中展示
xxxxxxxxxx# 导入matplotlib库import matplotlib.pyplot as plt# 将图片直接在Jupyter Notebook中展示%matplotlib inline# 解决中文乱码plt.rcParams["font.sans-serif"]='SimHei'# 解决负号无法正常显示问题plt.rcParams['axes.unicode_minus']=False# 将图表设置成矢量图格式(matplotlib图表不是很清晰)%config InlineBackend.figure_format = 'svg'
xxxxxxxxxx# 建立画布,fig =plt.figure()<Figure size 432x288 with 0 Axes># 设置整块画布的宽和高fig =plt.figure(figsize=(8,6))<Figure size 576x432 with 0 Axes>
先建立画布,再建立坐标系。
在画布fig上绘制 1 X 1个坐标系
xxxxxxxxxxfig = plt.figure()ax1 = fig.add_subplot(1,1,1)

在画布fig上绘制 2 X 2个坐标系
xxxxxxxxxxfig = plt.figure()ax1 = fig.add_subplot(2,2,1)ax2 = fig.add_subplot(2,2,2)ax3 = fig.add_subplot(2,2,3)ax4 = fig.add_subplot(2,2,4)

不需要建立画布,直接建立坐标系。
xxxxxxxxxximport numpy as npx = np.arange(6)y = np.arange(6)
xxxxxxxxxx# 将图表的整个区域分成2行2列,且在(0,0)位置绘图。plt.subplot2grid((2,2),(0,0))plt.plot(x,y)

xxxxxxxxxx# 将图表的整个区域分成2行2列,且在(0,0)位置做拆线图,在(0,1)位置做柱形图。plt.subplot2grid((2,2),(0,1))plt.bar(x,y)

与plt.subplot2grid函数类似,plt.suplot也是plt库的一个函数。
xxxxxxxxxx# 将图表的整个区域分成2行2列,在第1个坐标系上做拆线图plt.subplot(2,2,1)plt.plot(x,y)# 将图表的整个区域分成2行2列,在第4个坐标系上做柱形图plt.subplot(2,2,4)plt.bar(x,y)

subplot2grid、subplot函数每次只返回一个坐标系,而subplots函数一次可以返回多个坐标系。
xxxxxxxxxx# 图表整个区域分成2行2列,并将4个坐标系全部返回fig,axes = plt.subplots(2,2)

xxxxxxxxxx# 通过aexs[x,y]指明在那个坐标系绘图# 在[0,0]坐标系中绘制拆线图axes[0,0].plot(x,y)# 在[1,1]坐标系中绘制柱形图axes[1,1].bar(x,y)

总结:add_subplot属于对象式编程;plt.subplot2grid 、plt.subplot、 ply.subplots属于函数式编程。
坐标系所拥有的属性如下表
| 属性 | 含义 |
|---|---|
| facecolor | 外观 |
| spine | 边框线 |
| axis | 坐标轴 |
| axis_label | 坐标轴标签 |
| tick | 刻度 |
| tick_label | 刻度标签 |
| grid | 网格 |
| title | 标题 |
| legend | 图例 |
xxxxxxxxxxplt.xlabel("月份")plt.ylabel("注册量")
xxxxxxxxxxplt.xlabel("月份",labelpad=10)plt.ylabel("销量",labelpad=10)
xxxxxxxxxxx = [1,2,3,4,5,6,7,8,9]y = [1900,2200,3100,4200,4900,3800,4100,4700,4500]plt.plot(x, y)plt.xlabel("月份",fontsize='xx-large',color="#70AD47",fontweight='bold')plt.ylabel("销量")plt.show()

刻度线的值和刻度线标签
刻度值 ticks,刻度对应的标签 labels
xxxxxxxxxxplt.xticks(ticks,labels)plt.yticks(ticks,labels)
如果x/y轴的数值不显示出来,则输入空列表
xxxxxxxxxxplt.xticks([]])plt.yticks([])
设置坐标轴的范围(最大值、最小值)
xxxxxxxxxxplt.xlim(0,10)plt.ylim(0,6000)
刻度案例
xxxxxxxxxxticks_x = [1,2,3,4,5,6,7,8,9]labels_x = ["一月","二月","三月","四月","五月","六月","七月","八月","九月"]ticks_y = [1000,2000,3000,4000,5000,6000]labels_y = ["1000个","2000个","3000个","4000个","5000个","6000个"]plt.xticks(ticks_x,labels_x)plt.yticks(ticks_y,labels_y)plt.show()

tick_params参数
xxxxxxxxxxplt.tick_params(axis="y",which="both",direction="in")plt.tick_params(axis="x",which="both",direction="out",bottom="False")
参数表如下:
| 参数 | 值 | 使用 |
|---|---|---|
| axis | x,y,both | 将参数应用到哪个轴。默认值为“both”。 |
| reset | True/False | 是否重置所在设置,默认值:False |
| which | major,minor,both | 对哪种刻度线进行设置(主、次、两者),默认值为“major”。 |
| direction | in,out,inout | 将刻度线置于轴内,轴外或两者皆有。 |
| length | float | 刻度线长度(以磅为单位)。 |
| width | float | 刻度线宽度 |
| color | color | 刻度线颜色。 |
| pad | float | 刻度线和刻度标签之间的距离(以磅为单位)。 |
| labelsize | 浮点数或str | 刻度标签字体大小(以磅或字符串为单位)(例如“大”)。 |
| labelcolor | #A1B233、‘red’、‘green’等 | 刻度标签字体颜色 |
| top/bottom/left/right | True/False | 上下左右刻度线是否显示 |
| labeltop/labelbottom/labelleft/labelright | True/False | 上下左右刻度标签是否显示 |
xxxxxxxxxxplt.axis("off")

xxxxxxxxxxplt.grid(b="True") # x/y轴的网格线都显示plt.grid(True) # 简写形式plt.grid(b="true",axis="x") # 仅显示x轴的网格线plt.grid(b="true",axis="y") # 仅显示y轴的网格线# 网格线的线形设置成虚线,并且线宽设置为2plt.grid(b="True",linestyle="dashed",linewidth=2)

xxxxxxxxxxplt.plot(x,y1,label="一月")plt.pl0t(x,y2,label="二月")plt.legend(loc=4,ncol=2) # 图例位置在4,图例显示为2列(一行)

xxxxxxxxxxplt.legend(loc="upper left")plt.legend(loc=2)
loc参数如下:
0: 'best' 参数默认是'best',即自动寻找图例的最佳位置。
2: 'upper left' 9: 'upper center' 1: 'upper right'
6: 'center left' 10: 'center' 7: 'center right' 或者 5: 'right'
3: 'lower left' 8: 'lower center' 4: 'lower right'
图例的显示列数(默认1列)
xxxxxxxxxxplt.legend(ncol=2) # 两列,即一行
其它参数
fintsize 图例大小
prop 关于文本的相关设置,以字典形式传给参数prop
facecolor 图例框的背景颜色
edagecolor 图例框的边框颜色
title 图例标题
title_fontsize 图例标题大小
shadow 是否绘制图例框添加阴影,默认False
xxxxxxxxxxplt.title(label="XXX公司1-9月的销量")plt.title(label="XXX公司1-9月的销量",loc="left",color="red") # left/center(默认)/right,

xxxxxxxxxxplt.text(x,y,str,ha,va,fontsize,rotation,color,... )
x,y 表示标签的位置
str 表示要显示的字符或数值
ha horizontalalignment表示水平对齐方式 ,可以填 ‘center’ , ‘right’ ,‘left’ 等
va verticalalignment表示垂直对齐方式 ,可选 ‘center’ ,‘top’ , ‘bottom’,‘baseline’ 等
fontsize 标签字体大小
rotation 表示标签的旋转角度,以逆时针计算,取整
总结:plt.text()函数只是针对具体的某一个点(x,y)显示数据(str),如果要整个图表显示数据标签,则需要利用for进行遍历。
xxxxxxxxxxfor a,b in zip(x,y):plt.text(a,b,b,ha="center",va="bottom",fontsize=11)
xxxxxxxxxxplt.text(6,3800,"1900",color="red",fontsize=14,rotation=90)

xxxxxxxxxxplt.annotate(s,xy,xytext,arrowprops)
s 注释的文本内容
xy 注释的位置
xytext 注释的文本的显示位置
arrowprops 设置箭头相关参数,颜色、箭头类型等
xxxxxxxxxxplt.anottate("服务器宕机",xy=(4,2000),xytext=(6,2000),arrowprops=dict(facecolor="black",arrowstyle="->"))
facecolor 箭头的颜色;arrowstyle箭头的类型 -,->,<-,<->,<,_,空格,fancy,simple,wedge
xxxxxxxxxxx = [1,2,3,4,5,6,7,8,9]y = [1900,2200,3100,4200,4900,3800,4100,4700,4500]plt.plot(x,y)plt.annotate("这是注释的文本",xy=(6,3800),xytext=(5,3200),arrowprops=dict(facecolor="black",arrowstyle="->") )

xxxxxxxxxxplt.table(cellText=None, # 数据表内的值cellColours=None, # 数据表的颜色cellLoc='right', # 数据表中数值的位置,left/center/rightcolWidths=None, # 列宽rowLabels=None, # 行标签rowColours=None, # 行标签的颜色rowLoc='left', # 行标签的位置colLabels=None, # 列标签colColours=None, # 列标签的颜色colLoc='center', # 列标签的位置loc='bottom', # 整个数据表的位置,可选坐标系的上下左右bbox=None,edges='closed',**kwargs,)
xxxxxxxxxxcellText= [[1100,2200,3300,4400],[5500,6600,7700,8800]]colLabels= ["第一组","第二组","第三组","第四组"]rowLabels = ["2021年","2022年"]plt.table(cellText=cellText,rowLabels=rowLabels,rowColours= ["red","yellow"],rowLoc="center",colLabels=colLabels,colColours=["green","yellow","red","blue"],colLoc="left",loc="bottom")

xxxxxxxxxxplt.plot(x,y,color,linestyle,linewidth,marker,markeredgecolor,markeredgewidth,markerfacecolor,makersize,label,alpha,......)
x、y轴的数据
color 拆线的颜色
b(blue,蓝色)、c(cyan,品红)、g(green,绿色)、k(black,黑色)、m(magenta,红色)、w(white,白色)、y(yellow,黄色)
除了缩写字母,也可用颜色代码表示,还可以用标准颜色名称(black)、十六进制颜色值(#000000)、RGB元组(0,0,0)等
linestyle 线的样式
solid 实线(-),dashed 虚线(--),dashot 线点(-.),dotted 虚点线(...)
linewidth 线的宽度
label 图例名称
marker 每点的标记物的形状,例如点、圆圈、上三角形、五角星等
makeredgecor 标记外边颜色
makeredgewidth 标记外边线宽
makerfacecolor 标记实心颜色
makersize 标记大小
| 标记 | 符号 | 描述 |
|---|---|---|
| "." | ![]() | 点 |
| "," | ![]() | 像素点 |
| "o" | ![]() | 实心圆 |
| "v" | ![]() | 下三角 |
| "^" | ![]() | 上三角 |
| "<" | ![]() | 左三角 |
| ">" | ![]() | 右三角 |
| "1" | ![]() | 下三叉 |
| "2" | ![]() | 上三叉 |
| "3" | ![]() | 左三叉 |
| "4" | ![]() | 右三叉 |
| "8" | ![]() | 八角形 |
| "s" | ![]() | 正方形 |
| "p" | ![]() | 五边形 |
| "P" | ![]() | 加号(填充) |
| "*" | ![]() | 星号 |
| "h" | ![]() | 六边形 1 |
| "H" | ![]() | 六边形 2 |
| "+" | ![]() | 加号 |
| "x" | ![]() | 乘号 x |
| "X" | ![]() | 乘号 x (填充) |
| "D" | ![]() | 菱形 |
| "d" | ![]() | 瘦菱形 |
| "|" | ![]() | 竖线 |
| "_" | ![]() | 横线 |
| 0 (TICKLEFT) | ![]() | 左横线 |
| 1 (TICKRIGHT) | ![]() | 右横线 |
| 2 (TICKUP) | ![]() | 上竖线 |
| 3 (TICKDOWN) | ![]() | 下竖线 |
| 4 (CARETLEFT) | ![]() | 左箭头 |
| 5 (CARETRIGHT) | ![]() | 右箭头 |
| 6 (CARETUP) | ![]() | 上箭头 |
| 7 (CARETDOWN) | ![]() | 下箭头 |
| 8 (CARETLEFTBASE) | ![]() | 左箭头 (中间点为基准) |
| 9 (CARETRIGHTBASE) | ![]() | 右箭头 (中间点为基准) |
| 10 (CARETUPBASE) | ![]() | 上箭头 (中间点为基准) |
| 11 (CARETDOWNBASE) | ![]() | 下箭头 (中间点为基准) |
| "None", " " or "" | 没有任何标记 | |
| '$...$' | ![]() | 渲染指定的字符。例如 "$f$" 以字母 f 为标记。 |
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# 数据x = range(1,10)y = [152,280,327,425,475,480,451,380,400]plt.plot(x,y,linestyle="-.",label="销量",marker="*",color="m")# 刻度ticks_x = range(1,10)ticksLabels_x = ["一月","二月","三月","四月","五月","六月","七月","八月","九月"]# ticks_y = range(0,7)ticks_y = [0,100,200,300,400,500,600]ticksLabels_y = [0,100,200,300,400,500,600]plt.xticks(ticks_x,ticksLabels_x)plt.yticks(ticks_y,ticksLabels_y)# 标题plt.title("XXX公司1-9月销量",loc="left",color="red")# x/y轴标签plt.xlabel("月份",fontsize="16",color="#70AD47",fontweight='bold')plt.ylabel("销量",fontsize="16",color="#70AD47",fontweight='bold')# 数据标签for a,b in zip(x,y):plt.text(a,b,b,ha="center",va="bottom",fontsize=10)plt.grid(True) # 网络线plt.legend() # 图例

xxxxxxxxxxplt.bar(x,height,width=0.8,bottom=None,align='center',color,edgecolor)
x:柱形图的 x 轴数据。
height:柱子的高度。
width:柱子的宽度。
bottom:底座的 y 坐标,默认 0。
align:柱形图与 x 坐标的对齐方式,
'center' 以 x 位置为中心,这是默认值。 'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'。
color :柱子颜色
edgecolor:柱子边缘的颜色
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x/y数据x = np.array(["A组", "B组", "C组", "D组"])y = np.array([12, 22, 6, 18])# 绘图plt.bar(x, y, color = "#4CAF50",width=0.3,align="center",label="人数")# 标题plt.title("XXX人数统计",loc="center",color="blue")# 数据标签for a,b in zip(x,y):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)# 设x/y轴的名称plt.xlabel("小组名称")plt.ylabel("人数")# 显示图例plt.legend()# 保存图表plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltBar_1382_01.png")

只需要调整柱子的位置即可。
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x/y数据x = np.array([1,2,3,4])y1 = np.array([12, 22, 6, 18])y2 = np.array([22, 18, 16, 16])# 绘图plt.bar(x, y1, width=0.3,label="一月")plt.bar(x+0.3, y2, width=0.3,label="二月") # 柱子右移0.3# 标题plt.title("XXX人数统计",color="blue")# 数据标签for a,b in zip(x,y1):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)for a,b in zip(x+0.3,y2):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)# 设x/y轴的名称plt.xlabel("小组名称")plt.ylabel("人数")# 设置x刻度plt.xticks(x+0.15,["A组", "B组", "C组", "D组"])plt.yticks([5,10,15,20,25,30],["5人","10人","15人","20人","25人","30人"])# 显示图例plt.legend()# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltBar_1382_02.png")

xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x/y数据x = np.array(["A组", "B组", "C组", "D组"])y1 = np.array([9, 8, 8, 7])y2 = np.array([7, 6, 5, 10])# 绘图,柱子宽度0.3plt.bar(x, y1, width=0.3,label="一月")plt.bar(x, y2, width=0.3,label="二月")# 标题plt.title("XXX人数统计",color="blue")# 数据标签for a,b in zip(x,y1):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)for a,b in zip(x,y2):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)# 设x/y轴的名称plt.xlabel("小组名称")plt.ylabel("人数")# 显示图例plt.legend(loc="upper center",ncol=2)# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltBar_1382_03.png")

xxxxxxxxxxplt.barh(y,width,height,align,color,edgecolor)
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x/y数据x = np.array(["A组", "B组", "C组", "D组"])y = np.array([69, 78, 88, 67])# 绘图plt.barh(x,height=0.3,width=y)# 标题plt.title("XXX人数统计",color="blue")# 数据标签for a,b in zip(x,y):plt.text(b,a,b,ha="center",va="bottom",fontsize=12) # 注意ab顺序# 设x/y轴的名称plt.xlabel("x轴名称")plt.ylabel("y轴名称")print("OK")# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltBarh_1383_01.png")

xxxxxxxxxxplt.scatter(x,y,s,c,marker,linewidths,edgecolors)
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x/y数据x = np.array([1, 2, 3, 5, 6, 7, 8, 9])y = np.array([1.5, 2, 2.5, 5, 5.6, 7.5, 5.8, 6.9])# 绘图plt.scatter(x,y,marker="o",s=100)# 标题plt.title("XXX标题",color="Blue")# x/y轴名称plt.xlabel("x轴名称")plt.ylabel("y轴名称")# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltBarh_1383_01.png")

xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x/y数据x = np.array([1, 2, 3, 5, 6, 7, 8, 9])y = np.array([2.6, 2, 3.1, 5, 3.6, 7.5, 5.8, 6.9])# 绘图colors=y*10 # 根据y值大小,生成不同的颜色area = y*100 # 根据y值大小,生成大小不同的形状plt.scatter(x,y,c=colors,marker="o",s=area)# 标题plt.title("XXX标题",color="Blue")# 数据标签for a,b in zip(x,y):plt.text(a,b,b,ha="center",va="center",fontsize=10,color="white")# x/y轴名称plt.xlabel("x轴名称")plt.ylabel("y轴名称")# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltScatter_1385_01.png")

xxxxxxxxxxplt.stackplot(x,y,labels,colors)
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x/y数据x = np.array([1, 2, 3, 5, 6, 7, 8, 9])y1 = np.array([2.6, 2.8, 3.1, 5, 3.6, 7.5, 5.8, 6.9])y2 = np.array([2.4, 2.7, 3.0, 4.5, 3.2, 7.0, 5.4, 6.2])# 绘图labels=["计划人数","实际人数"]plt.stackplot(x,y1,y2,labels=labels)# 标题plt.title("XXX公司汇总数据的标题")# x/y轴名称plt.xlabel("x轴名称")plt.ylabel("y轴名称")# 展示图例plt.legend(loc="upper left")

树地图学用来表示同一等级中不同类别的占比关系,使用的是squarify库,先安装pip install squarify
xxxxxxxxxxsquarify.plot(sizes,label,color,value,edgecolor,linewidth)
xxxxxxxxxximport squarify

xxxxxxxxxxplt.polar(theta,r,color,marker,linewidth)
xxxxxxxxxx# 建立坐标系plt.subplot(111,polar=True) # polar=True建立极坐标系dataLenth=5 # 把整个圆分成5份angles = np.linspace(0,2*np.pi,dataLenth,endpoint=False)labels = ["沟通能力","业务理解能力","逻辑思维能力","快速学习能力","工具使用能力"]data=[2,3.5,4,4.5,5]data = np.concatenate((data,[data[0]])) # 闭合angles = np.concatenate((angles,[angles[0]]))# 绘图plt.polar(angles,data,color="r",marker="o")# 设置x轴刻度plt.xticks(angles,labels)# 设置标题plt.title("某数据分析师的综合评级",color="green",fontsize=16)# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltPolar_1388_01.png")

xxxxxxxxxxplt.boxplot(x,vert,width,labels)
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x/y数据y1 = np.array([2.6, 2.8, 3.1, 5, 3.6, 7.5, 5.8, 6.9])y2 = np.array([2.4, 2.7, 3.0, 4.5, 3.2, 7.0, 5.4, 6.2])x=[y1,y2]# 绘图labels=["计划人数","实际人数"]plt.boxplot(x,labels=labels,vert=True,widths=[0.2,0.5]) # 0.2 0.5箱子宽度# 设置标题plt.title("某数据分析师的综合评级",color="green",fontsize=16)# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltBoxplot_1389_01.png")

xxxxxxxxxxplt.pie(x, # 待绘图数据explode=None, # 饼图中每一块离圆心的距离labels=None, # 饼图中每一块的标签colors=None, # 饼图中每一块的颜色autopct=None, # 控制饼图内数值的百分比格式pctdistance=0.6, # 数据标签距离中心的距离shadow=False, # 饼图是否有阴影labeldistance=1.1, # 每一块索引距离中心的距离startangle=None, # 饼图的初始角度radius=None, # 饼图的半径counterclock=True, # 是否证饼图逆时针显示wedgeprops=None, # 饼图内外边界属性textprops=None, # 饼图中心文本相关属性center=(0, 0), # 饼图中心位置frame=False, # 是否显示饼图背后的图框rotatelabels=False,*,data=None,)
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x数值x=np.array([8566,5335,7310,6482])# 绘图labels=["A组", "B组", "C组", "D组"]explode=[0.05,0,0,0] # 让第一块离圆心远一点labeldistance=1.1plt.pie(x,labels=labels,autopct="%.0f%%",shadow=True,explode=explode,radius=1.0,labeldistance=labeldistance)# 设置标题plt.title("XXX公司的销量占比",color="green",fontsize=16)# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltPie_13810_01.png")

在饼图的基础上调整wedgeprops参数即可实现圆环图。
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# x数值x1=np.array([8566,5335,7310,6482])x2=np.array([4283,2667,7310,3241])# 绘图labels=["A组", "B组", "C组", "D组"]plt.pie(x1,labels=labels,radius=1.0,wedgeprops=dict(width=0.3,edgecolor='w'))plt.pie(x2,labels=labels,radius=0.7,wedgeprops=dict(width=0.3,edgecolor='w'))# 添加注解plt.annotate("完成量",xy=(0.35,0.35), xytext=(1.1,0.45), arrowprops=dict(facecolor="black",arrowstyle="->"))plt.annotate("任务量",xy=(0.75,0.20), xytext=(1.1,0.20), arrowprops=dict(facecolor="black",arrowstyle="->"))# 设置标题plt.title("XXX公司的销量占比",color="green",fontsize=16)# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltPie_13811_01.png")

xxxxxxxxxxplt.imshow(x, # 待绘图的数据,需要矩阵形式cmap # 配色方案,用来表明图表渐变的主题色)
cmap的所有可选值都封装在plt.cm里,在Jupyter Notebook中输入plt.cm,然后按Tab键就可以看到。
xxxxxxxxxximport itertools# 几个相关指标之间的相关性cm = np.array([[1,0.082,0.031,-0.0086],[0.082,1,-0.09,0.062],[0.031,-0.09,1,0.026],[-0.0086,0.062,0.026,1]])cmap = plt.cm.cool # 设置配色方案plt.imshow(cm,cmap=cmap)plt.colorbar() # 显示右边的颜色条# 设置x/y轴的刻度标签classes=["负债率","信贷数量","年龄","家属数量"]tick_marks=np.arange(len(classes))plt.xticks(tick_marks,classes)plt.yticks(tick_marks,classes)# 将数值显示在指定位置for i,j in itertools.product(range(cm.shape[0]),range(cm.shape[1])):plt.text(j,i,cm[i,j],horizontalalignment="center")# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltImshow_13812_01.png")

xxxxxxxxxxplt.axhline(y,xmin,xmax) # 水平线plt.axvline(x,ymin,ymax) # 垂直线
xxxxxxxxxx# 建立坐标系plt.subplot(1,2,1)#绘制一条Y等于2且起点是0.2,终点是0.6的水平线plt.axhline(y=2,xmin=0.2,xmax=0.6)plt.title("水平线axhline")# 建立坐标系plt.subplot(1,2,2)#绘制一条x等于2且起点是0.2,终点是0.6的垂直线plt.axvline(x=2,ymin=0.2,ymax=0.6)plt.title("垂直线axvline")# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltAxhline_13813_01.png")

将两条及以上折线画在同一个坐标系中。
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# xy的值x = np.array(np.arange(1,10,1))y1 = np.array([50,43,57,64,61,26,38,44,46])y2 = np.array([43,30,39,51,40,20,29,34,35])# 绘制折线图plt.plot(x,y1,color="blue",linestyle="-",label="计划",marker="o")plt.plot(x,y2,color="green",linestyle="-.",label="实际",marker="o")# 标题plt.title("XXX公司的销量情况",fontsize=18,color="red")# x/y轴名称plt.xlabel("月份")plt.ylabel("销量")# 数据标签for a,b in zip(x,y1):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)for a,b in zip(x,y2):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)# 刻度xticks = np.arange(1,10,1)yticks = np.arange(10,80,10)plt.xticks(xticks,["1月","2月","3月","4月","5月","6月","7月","8月","9月"])plt.yticks(yticks,["10人","20人","30人","40人","50人","60人","70人"])# 显示图例plt.legend(loc="upper right",ncol=2)# 保存图表plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltPlotTwo_1391_01.png")

xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# xy的值x = np.array(np.arange(1,10,1))y1 = np.array([50,43,57,64,61,26,38,44,46])y2 = np.array([43,30,39,51,40,20,29,34,35])# 绘制折线图plt.plot(x,y1,color="blue",linestyle="-",label="计划",marker="o")plt.bar(x,y2,color="green",width=0.4,label="实际")# 标题plt.title("XXX公司的销量情况",fontsize=18,color="red")# x/y轴名称plt.xlabel("月份",fontsize=14,color="blue" )plt.ylabel("销量")# 数据标签for a,b in zip(x,y1):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)for a,b in zip(x,y2):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)# 刻度xticks = np.arange(1,10,1)yticks = np.arange(10,80,10)plt.xticks(xticks,["1月","2月","3月","4月","5月","6月","7月","8月","9月"])plt.yticks(yticks,["10人","20人","30人","40人","50人","60人","70人"])# 显示图例plt.legend(loc="upper right",ncol=2)# 保存图表# plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltPlotBar_1392_01.png")

流程:先建立坐标系,然后绘制主坐标轴上的图表,再调用plt.twinx方法,最后绘制次坐标轴上的图表。
xxxxxxxxxx# 建立坐标系plt.subplot(1,1,1)# xy的值x = np.array(np.arange(1,10,1))y1 = np.array([5010,4510,5701,6410,5711,3110,3610,4410,4610])y2 = np.array([0.43,0.30,0.39,0.51,0.40,0.60,0.49,0.34,0.25])# 绘制主坐标轴的图表plt.plot(x,y1,color="blue",linestyle="-",marker="o",markersize=3,linewidth=1,label="注册人数")# 标题plt.title("XXX公司的销量情况",fontsize=18,color="red")# 设置主x/y轴名称plt.xlabel("月份",color="green",fontsize=16)plt.ylabel("注册量")# 主图表的数据标签for a,b in zip(x,y1):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)# 主刻度xticks = np.arange(1,10,1)yticks = np.arange(1000,8000,1000)plt.xticks(xticks,["1月","2月","3月","4月","5月","6月","7月","8月","9月"])plt.yticks(yticks,["1000人","2000人","3000人","4000人","5000人","6000人","7000人"])# 设置主坐标轴图例显示plt.legend(loc="upper left")# 调用twinx方法plt.twinx()# 绘制次坐标轴的图表plt.plot(x,y2,color="green",linestyle=":",marker="o",markersize=3,linewidth=1,label="激活率")# 次轴图表的数据标签for a,b in zip(x,y2):plt.text(a,b,b,ha="center",va="bottom",fontsize=12)# 次刻度plt.yticks([0.1,0.2,0.3,0.4,0.5,0.6,0.7],["0.1%","0.2%","0.3%","0.4%","0.5%","0.6%","0.7%"])# 设置次x/y轴的名称# plt.xlabel("月份",color="green",fontsize=16)plt.ylabel("激活率")# 设置次坐标轴图例显示plt.legend(loc="upper right")# 保存图表plt.savefig(r"C:\Users\Administrator\Desktop\学习笔记\5.Numpy_Pandas_Matplotlib\png\pltTwinx_13101_01.png")

流程与双y轴图表一样,在实际业务中很少使用。
xxxxxxxxxxplt.style.use(样式名)
xxxxxxxxxxplt.style.available['bmh','classic','dark_background','fast','fivethirtyeight','ggplot','grayscale','seaborn-bright','seaborn-colorblind','seaborn-dark-palette','seaborn-dark','seaborn-darkgrid','seaborn-deep','seaborn-muted','seaborn-notebook','seaborn-paper','seaborn-pastel','seaborn-poster','seaborn-talk','seaborn-ticks','seaborn-white','seaborn-whitegrid','seaborn','Solarize_Light2','tableau-colorblind10','_classic_test']








