目录
引言
在我们学习了前面的章节会发现,这些数据往往不能很直观的表示出我们所分析的结果,而图表能更好的展现我们想表达的数据。
matplotlib的介绍
python中绘图库有很多,但是Matplotlib是最基础的Python可视化库。
Matplotlib是一个python2D绘图库,常用于数据可视化。它能够以多种硬拷贝的格式和跨平台的交互式环境生成出版物质量的图形。
Matplotlib非常强大,它提供了丰富的绘图功能,包括折线图、散点图、柱状图、饼图、直方图等,并支持多种坐标轴类型和格式此外,Matplotlib还提供了灵活的API,允许用户定制图形的各种属性,如颜色、线条样式、标签、标题等。它还可以用来绘制各种静态,动态,交互式的图表。
Matplotlib的安装
使用pip安装
打开终端,输入以下指令
pip install matplotlib
使用Anaconda或Miniconda安装
使用以下命令安装
conda install matplotlib
Charm中安装
这里不详细说明,可以通过这个查看在PyCharm中安装
matplotlib画图基本语法
关于图形的基本介绍
要使用这个库我们首先要引进库——import matplotlib.pyplot as plt
pyplot模块是matplotlib中用于创建图表的主要接口
基本语法
用以上柱形图为例展开
#柱形图
plt.rcParams['font.family'] = 'SimHei' # 解决中文乱码
plt.figure(figsize=(12,6))#设置画布大小
plt.xticks(rotation=45) #设置 x 轴上刻度的旋转角度
plt.bar(df1.index,df1.values,color='#A0CBE2')
plt.xlabel("省份")#设置x轴名称
plt.ylabel("人数")#设置y轴名称
legend_font_size = 10#设置图例字体大小
plt.legend(["人数"], bbox_to_anchor=(0.99, 1), fontsize=legend_font_size)
#bbox_to_anchor参数用于设置图例的锚点位置。这个锚点是相对于图形的坐标系统的。
#(0.99, 1)表示图例的锚点位于图形宽度的99%和图形高度的100%的位置。换句话说,图例将被放置在图形的右上角。
plt.title("用户所在省份分布图(前30名)")
for i, height in enumerate(df1.values):
plt.text(i, height + 0.5, str(height), ha='center',color='green')
plt.show()
常用的绘图函数:
plt.plot()
:用于绘制折线图。plt.scatter()
:用于绘制散点图。plt.bar()
:用于绘制条形图。plt.hist()
:用于绘制直方图。plt.pie()
:用于绘制饼图。plt.boxplot()
:用于绘制箱线图。plt.imshow()
:用于绘制图像。plt.contour()
:用于绘制等高线图。plt.quiver()
:用于绘制矢量图。plt.hexbin()
:用于绘制六边形图。
一些参数自定义图形的样式
- x:表示散点图的横轴数据,可以是一个列表、数组或Series。
- y:表示散点图的纵轴数据,也可以是一个列表、数组或Series,长度要与x相同。
- color:表示散点图的颜色,默认为"red",也可以是其他颜色的字符串(如"blue"、"green")或颜色编码(如"#FF0000"表示红色)。
- marker:表示散点图数据点的标记形状,默认为"o"表示圆形,也可以是其他形状的字符串(如"s"表示正方形、"*"表示星形)
- s:表示散点的大小,可以是一个标量或与 x、y 等长度相同的数组。例如 s=50 或 s=[30, 80, 120, 160, 200]。
- alpha:表示散点的透明度,取值范围为 0 到 1,0 表示完全透明,1 表示完全不透明。例如 alpha=0.5。
- cmap:表示散点的颜色映射,用于将数值映射到颜色。可以是预定义的颜色映射(如 'viridis'、'jet'、'coolwarm' 等)或自定义的颜色映射对象。例如 cmap='coolwarm'。
- norm:表示用于归一化数据的对象,用于确定如何将数据映射到颜色。通常与 cmap 参数一起使用。例如 norm=matplotlib.colors.Normalize(vmin=0, vmax=100)。
- edgecolor:表示散点边缘的颜色。可以是颜色的名称或颜色编码,例如 edgecolor='black' 或 edgecolor='#FF0000
首先设置画布
- 画布类似画画的画板,它能决定图形的大小,画布默认颜色是白色,看不见它的边界。
- 语法:plot.figure(figsize,...)
- figsize:是一个元组,接收元组(a,b),a就表示画布的长,b表示画布的高。
还有别的常用的参数来制定画布:
dpi
: 分辨率,即每英寸的点数。例如,dpi=100
表示分辨率是100点每英寸。facecolor
: 图形背景的颜色。edgecolor
: 图形边缘的颜色。frameon
: 一个布尔值,用于指定是否显示图形的边框。例如,frameon=False
表示不显示边框。
#画布
import matplotlib.pyplot as plt
plt.figure(figsize=(9,5), facecolor='blue',edgecolor='red',linewidth=2,frameon=True)
#figsize设置画布长、高,facecolor设置图形背景颜色,edgecolor设置图形边框颜色,linewidth设置图形边框大小,frameon设置图形边框,如果是False,那么(facecolor,edgecolor,linewidth)都不显示
plt.plot([1,3], [2,5])#函数接受两个参数,分别表示x轴和y轴的数据
设置坐标轴
- 坐标轴为x和y轴,其内容包括坐标轴标题、刻度、范围和网格线。
- Matplotlib库中通过不同函数控制以上坐标轴的设置。
函数名 | 传入参数及其作用 |
plt.xlabel() | 字符串作为参数传入,以设置x轴的标题(标签) |
plt.ylabel() | 字符串作为参数传入,以设置y轴的标题(标签) |
plt.xticks() | 一个列表或数组作为参数来设置刻度的位置,表示x轴各个刻度的值(刻度为类别型数据时使用) |
plt.yticks() | 一个列表或数组作为参数来设置刻度的位置,表示y轴各个刻度的值(刻度为类别型数据时使用) |
plt.xlim() | 传入一个列表或者是两个数,分别表示轴的最小值和最大值(x轴取值范围) |
plt.ylim() | 传入一个列表或者是两个数,分别表示轴的最小值和最大值(y轴取值范围) |
plt.grid() | 这个函数用于显示网格线。通过将参数设置为True,可以显示网格线;设置为False将隐藏网格线 |
使用
plt.plot()
绘制图形,并使用plt.show()
将图形显示出来。plt.rcParams['font.family'] = 'SimHei' # 解决中文乱码
#坐标轴
plt.rcParams['font.family'] = 'SimHei' # 解决中文乱码
plt.xlabel('x轴')
plt.ylabel('y轴')
# plt.xticks([1,2,3]) # 刻度
# plt.yticks([1,2,3])
plt.xlim(1,4) # 坐标轴范围
plt.ylim([1,5])
plt.grid(True) # 网格线
plt.show() # 只显示图像
plt.legend()设置图例
常用参数有
loc
:用于指定图例的位置,可以是字符串或整数,默认值为"best"
。常用的位置参数包括"upper right"
、"upper left"
、"lower right"
、"lower left"
、"center"
等,也可以是一个整数代表的位置代码。例如,loc=2
表示图例位于左上角,loc="center"
表示图例居中。bbox_to_anchor
:用于指定图例的位置偏移,以坐标轴的比例表示,默认值为None。可以是一个二元组(x, y)
,其中(0, 0)
表示坐标轴的左下角,(1, 1)
表示坐标轴的右上角。title
:用于设置图例的标题文本,默认值为None。fontsize
:用于设置图例文本的字体大小,默认值为None,表示使用默认字体大小。shadow
:用于设置是否显示图例的阴影,默认值为False。frameon
:用于设置是否显示图例的边框,默认值为True。ncol
:用于设置图例的列数,默认值为1,表示为单列。markerscale
:用于设置图例中标记的缩放比例,默认值为1。framealpha
:用于设置图例边框的透明度,默认值为None,表示使用默认透明度。- mode:用于设置图例的显示模式,默认值为"expand"。其他可选模式包括"replace"、"anchor"等。
在Matplotlib中,
plt.legend()
函数需要在plt.plot()
之后调用才能正确显示图例
plt.title()设置标题
参数有:
- -label:用于指定标题的文本。例如,plt.title(label='My Title')
- -loc:用于设置标题的位置,可以是字符串或整数。常用的位置参数包括'center'、'left'、'right'等,也可以是一个整数代码。例如,plt.title(loc='right')
- -pad:用于设置标题与图表之间的间距,以点为单位。例如,plt.title(pad=20)
- -color:用于设置标题的颜色。可以是颜色的名称或颜色编码。例如,plt.title(color='red')
- -backgroundcolor:用于设置标题的背景颜色。可以是颜色的名称或颜色编码。例如,plt.title(backgroundcolor='lightgray')。
- -fontsize:用于设置标题文本的字体大小。例如,plt.title(fontsize=18)。
- -fontweight:用于设置标题文本的字体粗细。可以是字符串'normal'、'bold'、'heavy'等,也可以是一个整数值。例如,plt.title(fontweight='bold')。
- -fontdict:用于设置标题文本的字体样式,可以是一个字典。例如,plt.title(fontdict={'family': 'serif', 'size': 14, 'weight': 'bold'})
#图例,标题
import matplotlib.pyplot as plt
plt.figure(figsize=(10,5))
plt.rcParams['font.family'] = 'SimHei' # 解决中文乱码
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.plot([1,3], [2,5])
plt.legend(["图例"], loc='upper left',fontsize=9)#图例名称为图例,图例在左上角,字体大小为9
plt.title(label='标题',color='blue',pad=12)#设置标题名称为标题,颜色为蓝色,距离图标12px
#plt.title('标题',color='blue',pad=12)#可以这么写
plt.show()
plt.text()设置文本标签
参数:
- - x 和 y:文本标签的位置坐标,即文本标签的横坐标和纵坐标。
- - s:文本内容。- fontsize:文本字体大小。
- - rotation:文本的旋转角度,以度为单位。
- - bbox:一个字典,用于设置文本的边框样式。常用的设置包括边框颜色('edgecolor')、边框线宽('linewidth')和边框透明度('alpha')。
- -color:文本颜色。
- - horizontalalignment(-ha):水平对齐方式,可以是'center','left'和'right'.
- - verticalalignment(-va):垂直对齐方式,可以是'center'、'top'、'bottom'
# 给折线图的点添加y值标签
# x = [1,2,3,4,5]
x = ['a','b','c','d','e']
y = [1,3,4,8,3]
plt.plot(x,y,'*--',color='green')
for a,b in zip(x,y):#zip()函数将两个可迭代对象(例如列表)中的元素一一配对
# print(a,b)
plt.text(a,b+0.2,f'{b}',ha='center',color='red') # 每次画一个点的y值,并使用 ha='center' 将文本居中对齐。b + 0.2 是为了让标签稍微向上偏移一点