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")
xxxxxxxxxx
import matplotlib.pyplot as plt
import 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)*5
y2 = 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个坐标系
xxxxxxxxxx
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
在画布fig上绘制 2 X 2个坐标系
xxxxxxxxxx
fig = 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)
不需要建立画布,直接建立坐标系。
xxxxxxxxxx
import numpy as np
x = 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 | 图例 |
xxxxxxxxxx
plt.xlabel("月份")
plt.ylabel("注册量")
xxxxxxxxxx
plt.xlabel("月份",labelpad=10)
plt.ylabel("销量",labelpad=10)
xxxxxxxxxx
x = [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
xxxxxxxxxx
plt.xticks(ticks,labels)
plt.yticks(ticks,labels)
如果x/y轴的数值不显示出来,则输入空列表
xxxxxxxxxx
plt.xticks([]])
plt.yticks([])
设置坐标轴的范围(最大值、最小值)
xxxxxxxxxx
plt.xlim(0,10)
plt.ylim(0,6000)
刻度案例
xxxxxxxxxx
ticks_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参数
xxxxxxxxxx
plt.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 | 上下左右刻度标签是否显示 |
xxxxxxxxxx
plt.axis("off")
xxxxxxxxxx
plt.grid(b="True") # x/y轴的网格线都显示
plt.grid(True) # 简写形式
plt.grid(b="true",axis="x") # 仅显示x轴的网格线
plt.grid(b="true",axis="y") # 仅显示y轴的网格线
# 网格线的线形设置成虚线,并且线宽设置为2
plt.grid(b="True",linestyle="dashed",linewidth=2)
xxxxxxxxxx
plt.plot(x,y1,label="一月")
plt.pl0t(x,y2,label="二月")
plt.legend(loc=4,ncol=2) # 图例位置在4,图例显示为2列(一行)
xxxxxxxxxx
plt.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列)
xxxxxxxxxx
plt.legend(ncol=2) # 两列,即一行
其它参数
fintsize 图例大小
prop 关于文本的相关设置,以字典形式传给参数prop
facecolor 图例框的背景颜色
edagecolor 图例框的边框颜色
title 图例标题
title_fontsize 图例标题大小
shadow 是否绘制图例框添加阴影,默认False
xxxxxxxxxx
plt.title(label="XXX公司1-9月的销量")
plt.title(label="XXX公司1-9月的销量",loc="left",color="red") # left/center(默认)/right,
xxxxxxxxxx
plt.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进行遍历。
xxxxxxxxxx
for a,b in zip(x,y):
plt.text(a,b,b,ha="center",va="bottom",fontsize=11)
xxxxxxxxxx
plt.text(6,3800,"1900",color="red",fontsize=14,rotation=90)
xxxxxxxxxx
plt.annotate(s,xy,xytext,arrowprops)
s 注释的文本内容
xy 注释的位置
xytext 注释的文本的显示位置
arrowprops 设置箭头相关参数,颜色、箭头类型等
xxxxxxxxxx
plt.anottate("服务器宕机",xy=(4,2000),xytext=(6,2000),arrowprops=dict(facecolor="black",arrowstyle="->"))
facecolor 箭头的颜色;arrowstyle箭头的类型 -,->,<-,<->,<,_,空格,fancy,simple,wedge
xxxxxxxxxx
x = [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="->") )
xxxxxxxxxx
plt.table(
cellText=None, # 数据表内的值
cellColours=None, # 数据表的颜色
cellLoc='right', # 数据表中数值的位置,left/center/right
colWidths=None, # 列宽
rowLabels=None, # 行标签
rowColours=None, # 行标签的颜色
rowLoc='left', # 行标签的位置
colLabels=None, # 列标签
colColours=None, # 列标签的颜色
colLoc='center', # 列标签的位置
loc='bottom', # 整个数据表的位置,可选坐标系的上下左右
bbox=None,
edges='closed',
**kwargs,
)
xxxxxxxxxx
cellText= [[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")
xxxxxxxxxx
plt.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() # 图例
xxxxxxxxxx
plt.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.3
plt.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")
xxxxxxxxxx
plt.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")
xxxxxxxxxx
plt.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")
xxxxxxxxxx
plt.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
xxxxxxxxxx
squarify.plot(sizes,label,color,value,edgecolor,linewidth)
xxxxxxxxxx
import squarify
xxxxxxxxxx
plt.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")
xxxxxxxxxx
plt.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")
xxxxxxxxxx
plt.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.1
plt.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")
xxxxxxxxxx
plt.imshow(
x, # 待绘图的数据,需要矩阵形式
cmap # 配色方案,用来表明图表渐变的主题色
)
cmap的所有可选值都封装在plt.cm里,在Jupyter Notebook中输入plt.cm,然后按Tab键就可以看到。
xxxxxxxxxx
import 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")
xxxxxxxxxx
plt.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轴图表一样,在实际业务中很少使用。
xxxxxxxxxx
plt.style.use(样式名)
xxxxxxxxxx
plt.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']