matplotlib模块可以数据制作成图表的形式展示,更直观的看到数据的趋势和分布。
在matplotlib模块中默认不显示中文且负号由方块表示,要声明中文字体显示和负号。
柱状图:常用于数据的比对,使用bar()传入x轴和y轴数据绘制。附加的参数width和color可以指定柱形图柱子的宽度和颜色。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #设置中文字体(字体的英文)
plt.reParams['axex.unicode_minus']=False #设置负号的显示
x = ['广州',2,3,4,5]
y = [10, 20, 30, 40, 10]
plt.bar(x,y) #传入xy轴数据,绘制图像
plt.show() # 显示图像
plt.bar(x,y, width=1.5, color='red') #绘制图像,设置柱子的宽度和颜色
条形图:即打横放置的柱形图,使用barh()绘制,参数width变为height,其他情况同柱形图
折线图:描述数据的趋势。使用plot()进行绘制,附加的参数color、参数linewidth、参数linestyle、参数marker、参数marksize分别设置折线颜色、折线粗细、线条形态、数据标记的样式、数据标记的大小。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #设置中文字体(字体的英文)
plt.reParams['axex.unicode_minus']=False #设置负号的显示
x = ['1月', '2月', '3月', '4月', '5月']
y = [10, 20, 30, 40, 50]
plt.plot(x,y, linewidth=0.3, color='bule') #线粗0.3,蓝色
plt.show()
- 或solid | 长实线 | -. 或dashdot | 横点线 |
-- 或 dashed | 短横序线 | none 或 '' 或 ' ' | 不画线 |
. 或 dotted | 点线 |
. | 小实心点 | s | 实心正方 | D | 正常棱形 |
o | 大实心点 | * | 实心五角星 | d | 窄棱形 |
v | 实心倒三角 | p | 实心五边 | + | 十字形 |
^ | 实心正三角 | h | 实心六角 | x | 叉形 |
面积图:另一种形式的折线图,使用面积描述趋势。使用stackplot()绘制图形,其余同折线图。
散点图:容易表示数据的分布散列关系和相关性。用scatter()绘制,参数s、参数marker、参数color、参数edgecolor分别设置点的面积、点的样式、点的填充颜色、点的轮廓颜色。
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_excel('测试.xlsx') # 引入外部数据
x = data['成绩']
y = data['序号']
plt.scatter(x,y, s=50, marker='o', color='red', edgecolor='black')
plt.show()
饼图:展示各类数据的占比。用pie()绘制,传入每一块饼图的值。
参数labels以列表形式传入每一个饼图块的标签(与传入值的顺序对应),参数labeldistance设置每一个饼图块标签与圆心的距离;参数autopct设置百分比数值的格式(自动计算百分比),参数pctdistance设置百分比数值与圆心的距离。
可选参数explode,传入列表设置饼图块与圆心的距离,列表的顺序同值传入的顺序。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #设置中文字体(字体的英文)
plt.reParams['axex.unicode_minus']=False #设置负号的显示
lab = ['中餐', '西餐', '日料', '意餐', '东南亚']
data = [50, 50, 30, 20, 10]
plt.pie(data, labels=lab, labeldistance=1.2, autopct='%.2f%%', pctdistance=1.5)
plt.show()
设置参数wedgeprops,传入字典width设置环形的宽度,linewidth设置边框粗细,edgecolor设置边框颜色,可以把饼图变为圆环图。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #设置中文字体(字体的英文)
plt.reParams['axex.unicode_minus']=False #设置负号的显示
lab = ['中餐', '西餐', '日料', '意餐', '东南亚']
data = [50, 50, 30, 20, 10]
plt.pie(data, labels=lab, labeldistance=1.2, autopct='%.2f%%', pctdistance=1.5, wedgeprops={'width':0.5, 'linewidth':2, 'edgecolor':'white'})
plt.show()
先用subplot()划分当前页面,前两个参数声明画面分为多少行多少列,第三个参数声明当前使用第几个区域
import matplotlib.pyplot as plt
plt.subplot(1,2,1) #画面分为一行两列,当前使用第一个区域
x1 = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 1, 1]
plt.plot(x1,y1)
plt.subplot(1,2,2) #画面分为一行两列,当前使用第二个区域
x2 = [1, 2, 3, 4, 5]
y2 = [1, 2, 3, 4, 5]
plt.plot(x2,y2)
plt.show()
在matplotlib.pyplot中提供了一些常用的方法以添加图表细节。
title("") | 设置图的标题 | xlabel("") | 设置X轴名称 |
ylabel("") | 设置Y轴名称 | xlim(x,y ) | 设置X轴的刻度范围为 x~y |
ylim(x,y) | 设置Y轴的刻度范围为 x~y | grid(b=True) | 添加网格线,其中附加参数为color,linestyle,linewidth |