文章目录
-
-
- 一、Matplotlib概念和基本属性设置思维导图
- 二、折线图基础绘制及代码中相关参数解析
-
- 1、代码
- 2、结果展示
- 3、Matplotlib图组件—官方
- 4、jupyter Notebook获取函数及其参数使用方法
- 5、代码函数和类常用参数详解
-
- (1)`plt.figure()` 参数
- (2)`font_manager.FontProperties()`参数
- (3)`plt.plot()`参数
- (4)`plt.legend()`参数
- (5)`plt.grid()`参数
- 三、条形图基础绘制
-
- 1、简单条形图
-
- (1)导入模块
- (2)设置条形图的属性
- (3)绘制条形图
- (4)结果展示
- 2、横向条形图
- 3、并列条形图
- 4、堆叠条形图
- 四、直方图基础绘制
-
- 1、直方图概念
- 2、直方图绘制
-
- (1)导入模块
- (2)准备数据
- (3)创建画布,设置相关属性
- (4)直方图绘制
- 五、饼图基础绘制
-
一、Matplotlib概念和基本属性设置思维导图
二、折线图基础绘制及代码中相关参数解析
1、代码
from matplotlib import pyplot as plt
from matplotlib import font_manager
#设置x,y的值
x1=[-7,-4,-1,0,3,5,7,9,12,15,16,17]
y1=[12,13,15,17,23,11,13,26,99,10,12,36]
y2=[-12,73,-15,7,13,33,12,36,9,11,1,7]#设置实例fig的大小和像素
fig = plt.figure(figsize=(30,10),dpi=300)#导入windows的字体
font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyh.ttc',size=20)#设置图的图例名字,折线的颜色,透明度,折线宽度,和折点的形状,折点的大小,折点的颜色,折点边缘的颜色,这里形状为*
plt.plot(x1,y1,label='图例1',color='orange',alpha=1,linewidth=3,marker='*',markersize=30,markerfacecolor='red',markeredgecolor='purple',markeredgewidth=5)
plt.plot(x1,y2,label='图例2',color='green',alpha=1,linewidth=3,marker='o',markersize=20,markerfacecolor='purple',markeredgecolor='red',markeredgewidth=5)#设置图例的显示,显示为中文
plt.legend(prop=font,loc='upper right')#设置图的网格,x隐藏,只显示竖直方向的网格线,以及网格线的样式,透明度和宽度
plt.grid(axis='x',color='red',alpha=0.5,linestyle='--',linewidth=1)#设置x轴左边最大是-2,隐藏右边和上方的坐标轴,将左边和下方坐标轴0点重合形成新坐标轴
plt.xlim(left=-2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_color('blue')
ax.spines['left'].set_color('blue')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))#设置x轴和y轴的刻度,显示中文,旋转30度
x=[-8,-6,-4,-2,0,2,4,6,8,10,12,14,16,18]
y=[0,10,20,30,40,50,60,70,80,90,100]
x_ticks_label = ["{}度".format(i) for i in x]
plt.xticks(x,x_ticks_label,fontproperties=font)
y_ticks_label = ["{}个".format(i) for i in y]
plt.yticks(y,y_ticks_label,fontproperties=font)#设置x轴标签
plt.xlabel('温度',fontproperties=font)#显示图例1对应折线折点的x和y的值,坐标注释的位置,字体线型和字体颜色和外框显示
for a,b in zip(x1,y1):plt.annotate('(%s,%s)'%(a,b),xy=(a,b),xytext=(10,10),textcoords='offset points',weight='heavy',color='#0926f1', bbox=dict(boxstyle='round,pad=0.5', fc='yellow', ec='k', lw=1, alpha=0.5))
#显示图例2对应折线折点的坐标,垂直对齐方式,水平对齐方式,字体大小,字体背景颜色,旋转角度,透明度
for a,b in zip(x1,y2):plt.text(a,b,(a,b),ha='left',va='top',fontsize=12,color='#0926f1',backgroundcolor='yellow',rotation=3,alpha=0.5)
#保存生成的图片
plt.savefig('D:/tools/Git/data-analysis-learning-route/数据分析基础/python/python基础语法/示例.png')
plt.show()
2、结果展示
3、Matplotlib图组件—官方
4、jupyter Notebook获取函数及其参数使用方法
举例:获取abs函数和参数用法,输入后,点击运行,或者在光标位置按Shift+Tab
abs?
5、代码函数和类常用参数详解
(1)plt.figure()
参数
plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
num
:数字或者字符串,数字作为id,如果id预先不存在,则新增figure,按顺序递增编号,如果id存在,则返回对该图像的引用。字符串则是窗口标题figsize
:英寸单位,(宽,高)dpi
:设置图像分辨率facecolor
:背景颜色edgecolor
:边框颜色frameon
:是否显示边框
(2)font_manager.FontProperties()
参数
font_manager.FontProperties(family=None,style=None,variant=None,weight=None,stretch=None,size=None,fname=None)
family
:字体类别,默认值为sans-serif
(无衬线体),其他的有serif
(衬线体),cursive
(手写体),fantasy
(符号字体),monospace
(等宽字体)style
:字体的样式,默认为normal
(正常),其他的有italic
(斜体),oblique
(文本倾斜)variant
:默认为normal
,其他的为small-caps
(小型大写字体)weight
:字体的粗细,采用0-1000的数值表示,也可用另一种表示,默认为normal
,其他的为ultralight
(超细),light
(细),regular
(常规),book
,medium
(中等),roman
(罗马字体),semibold
,demibold
,demi
,bold
,heavy
,extra bold
(超粗),black
(黑色)stretch
: 字体的拉伸,采用0-1000的数值表示,也可用另一种表示,ultra-condensed
,extra-condensed
,condensed
,semi-condensed
,normal
,semi-expanded
,expanded
,extra-expanded
,ultra-expanded
size
:字体大小,默认为10,使用数字,或者xx-small
,x-small
,small
,medium
,large
,x-large
,xx-large
fname
:通过字体文件的绝对路径指定特定的字体,一般是windows自带字体
(3)plt.plot()
参数
plt.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
对于使用的人,比如我这个菜鸟,可能这个就太抽象了,即便后面他补充说明了几种参数,但我的使用主要还是集中在2D的一些我个人目前常用的绘图的属性设置,写到这里我学会了用word做表格更清晰明了
-
x,y
:x是可选的,如果没写,则默认情况下是按照y的长度range,输入 -
alpha
:`:透明度 -
animated
:布尔值类型,动态绘图的一个参数 -
color
:颜色,可以缩写成c -
label
:图例标签 -
linewidth
:线的宽度,浮点型,可以缩写为lw -
markeredgecolor
:折点边缘颜色,可以缩写为mec: -
markeredgewidth
:折点边缘大小,可以缩写为mew -
markerfacecolor
:折点颜色,可以缩写为mfc -
markersize
:折点大小,可以缩写为ms
(4)plt.legend()
参数
plt.legend(*args, **kwargs)
labels
:图例的内容,列表loc
:设置图例的位置,有以下几种:
bbox_to_anchor
:指定图例在轴/图形中的位置ncol
:图例列的数量,默认为1prop
:有值时为获取的字体,无值时一般使用的是matplotli在这里插入代码片
b.rc函数的获取字体的功能fontsize
:字体大小,为数值时以磅为单位,一般没有指定prop的情况下,使用xx-small
,x-small
,small
,medium
,large
,x-large
,xx-large
shadow
:是否在图例后面添加阴影framealpha
:设置图例框架透明度title
:图例标题,默认无title_fontsize
:图例标题字体大小borderpad
:图例边框的内边距,浮点型labelspacing
:图例条目之间的垂直间距handlelength
:图例句柄的长度handletextpad
:图例句柄和文本之间的差距borderaxespad
:轴与图例边框的距离
(5)plt.grid()
参数
plt.grid(b=None, which='major', axis='both', **kwargs)
三、条形图基础绘制
1、简单条形图
(1)导入模块
from matplotlib import pyplot as plt
import matplotlib
(2)设置条形图的属性
#设置条形图每条的刻度,条形图高度
a = ['我','在','画','图','片','呢']
b = ['18.11','29.23','4.91','31.54','9.17','6.91']
matplotlib.rc("font",family='SimHei',size=18)
plt.figure(figsize=(20,8),dpi=80)
#设置坐标轴刻度、条形图高度、条形图宽度,颜色,
rects = plt.bar(range(len(a)),[float(i) for i in b],width=0.3,color=['r','g','b','y','k','m'])
# 在条形图上加水平居中的标注
for rect in rects: #循环对每个条形图操作height = rect.get_height() #获取每个条形图的高度plt.text(rect.get_x() + rect.get_width() / 2, height+0.3, str(height),ha="center") #获取条形图在坐标轴上左边的坐标和宽度的一半的值,相加,加高度0.3,即在条形图中点上方0.3处
(3)绘制条形图
plt.xticks(range(len(a)),a)
plt.yticks(range(0,41,5),range(0,41,5))
plt.show()
(4)结果展示
2、横向条形图
from matplotlib import pyplot as plt
import matplotlib
a = ['你','看','我','画','的','图']
b = ['18.11','29.23','4.91','31.54','9.17','6.91']
matplotlib.rc("font",family='SimHei',size=18)
plt.figure(figsize=(20,8),dpi=80)
rects = plt.barh(range(len(a)),[float(i) for i in b],height=0.5,color=['r','g','b','y','k','m'])
plt.yticks(range(len(a)),a)
for rect in rects:width = rect.get_width()plt.text(width,rect.get_y()+0.5/2,str(width),va='center')
plt.show()
3、并列条形图
import matplotlib.pyplot as plt
import numpy as np
index = np.arange(4)
BJ = [50,55,53,60]
Sh = [44,66,55,41]
plt.bar(index,BJ,width=0.3,color='r')
plt.bar(index+0.3,Sh,width=0.3,color='b')
plt.xticks(index+0.3/2,index)
plt.show()
4、堆叠条形图
import matplotlib.pyplot as plt
import numpy as np
index = np.arange(4)
BJ = [50,55,53,60]
Sh = [44,66,55,41]
plt.bar(index,BJ,width=0.3,color='r')
plt.bar(index,Sh,bottom=BJ,width=0.3,color='g') #以BJ为底部
plt.show()
四、直方图基础绘制
1、直方图概念
用连续的数据,一系列高度不等的纵向条纹或者线段展示一组或者多组的数据分布情况,横轴表示数据范围,纵轴表示分布情况
2、直方图绘制
(1)导入模块
import matplotlib
from matplotlib import pyplot as plt
(2)准备数据
time = [131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114,119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123,117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116,108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125,138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 81, 97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111,101, 110,105, 129, 137, 112, 120, 113, 133, 112, 83, 94, 146, 133, 101,131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
(3)创建画布,设置相关属性
plt.figure(figsize=(20, 8), dpi=100)
matplotlib.rc('font',family='SimHei',size=18)
# 设置组距
distance = 4
# 计算组数:用数据里最大的值减去最小值除以组距
group = int((max(time) - min(time)) / distance)
(4)直方图绘制
plt.hist(time, bins=group, facecolor="blue", edgecolor="black", alpha=0.7)
plt.xticks(range(min(time), max(time))[::2])
plt.grid(linestyle="-.", alpha=0.5,color='k')
plt.xlabel("电影时长")
plt.ylabel("数据量")
plt.show()
五、饼图基础绘制
#导入模块
import matplotlib.pyplot as plt
import matplotlib#设置画布
plt.figure(figsize=(20, 8), dpi=100)#显示中文字体
matplotlib.rc('font',family='SimHei',size=14)#设置每个部分标签,扇形大小,颜色,扇形每个部分的突出值,
label = ["数学", "语文", "英语"]
size = [40, 60, 5]
color = ["r", "g", "b"]
explode = [0.05, 0.08, 0]
patches, l_text, p_text = plt.pie(size, explode=explode, colors=color,labels=label, #设置扇形、标签、百分比标签实例labeldistance=1.2, #标签文本距离圆心位置,1.2倍半径autopct="%1.2f%%", #设置圆内文本数据格式shadow=True, #是否带有阴影startangle=90, #设置起始角度,默认从0开始逆时针旋转pctdistance=0.7) #设置圆内文本距圆心距离plt.legend( loc='center left')
plt.axis("equal")
plt.show()