hello,大家好,我是wangzirui32,今天来教大家如何利用数据可视化库matplotlib绘制多种图表。
开始学习吧!
输入pip安装指令:
pip install matplotlib
没有报错即安装成功。
先来看一个最最最简单的例子:绘制折线统计图。代码如下:
import matplotlib.pyplot as plt
input_numbers = [1, 2, 3, 4, 5] # X轴数值
numbers = [10, 20, 30, 40, 50] # Y轴数值
# 传入数字列表 设置线条宽度为5
plt.plot(input_numbers, numbers, linewidth=5)
# 设置标题 设置字体大小
plt.title("maplotlib-test", fontsize=24)
# 设置X,Y轴说明文字 并设置字体大小
plt.xlabel("X", fontsize=14)
plt.ylabel("Y", fontsize=14)
# 保存图表 bbox_inches='tight'将图表的多余空白部分去除
plt.savefig("折线统计图.png", bbox_inches='tight')
# 展示图表
plt.show()
运行代码,保存的图表如下:
可以看到,标题,XY轴的说明都正确的显示了出来。
import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5]
y_values = [5, 10, 15, 20, 25]
# 传入点的x,y参数 设置点的大小为100
plt.scatter(x_values, y_values, s=100)
# 绘制图表说明参数
plt.title("maplotlib-test2", fontsize=24)
plt.xlabel("X", fontsize=14)
plt.ylabel("Y", fontsize=14)
# 保存并展示
plt.savefig("散点图.png", bbox_inches='tight')
plt.show()
代码:
import matplotlib.pyplot as plt
# 柱形图参数
names = ["Bar 1", "Bar 2", "Bar 3"]
values = [1000, 2000, 3000]
# 传入参数 width=0.5设置柱形宽度 lable="numbers"设置此统计图的名称
plt.bar(names, values, width=0.5, label="numbers")
# 绘制图表说明参数 loc="center"将标题文字居中
plt.title("maplotlib-test3", loc="center")
plt.xlabel("Bar", fontsize=14)
plt.ylabel("Values", fontsize=14)
# 保存并展示
plt.savefig("柱形图.png", bbox_inches='tight')
plt.show()
import matplotlib.pyplot as plt
# 条形图参数
names = ["Barh 1", "Barh 2", "Barh 3"]
values = [1000, 2000, 3000]
"""
plt.barh 传入参数:
lable="numbers"设置此统计图的名称
color="red"设置条形图的颜色
edgecolor="blue"设置条形图边缘的颜色
这些参数同样适用于plt.bar(柱形统计图)方法
"""
plt.barh(names, values, label="numbers", color="red", edgecolor="blue")
# 绘制图表说明参数
plt.title("maplotlib-test4", loc="center")
plt.xlabel("Bar", fontsize=14)
plt.ylabel("Values", fontsize=14)
# 保存并展示
plt.savefig("条形图.png", bbox_inches='tight')
plt.show()
生成气泡图的函数和生成散点图的函数一样,只不过修改了每个点的大小,代码:
import matplotlib.pyplot as plt
# 气泡图参数
x_values = [5, 20, 50]
y_values = [10, 40, 100]
"""
这段代码使用了Python内部的一种语法,
其意思是:
用x变量遍历x_values的每一个列表项,
每次将x*10的值加入area列表
"""
area = [x*10 for x in x_values]
# s=area 设置每个点的大小 可为列表 可为数字
plt.scatter(x_values, y_values, s=area)
# 绘制图表说明参数
plt.title("maplotlib-test5", loc="center")
plt.xlabel("X", fontsize=14)
plt.ylabel("Y", fontsize=14)
# 保存并展示
plt.savefig("气泡图.png", bbox_inches='tight')
plt.show()
面积图是与折线图类似的一种图表,代码:
import matplotlib.pyplot as plt
# 面积图参数
x_values = [1, 2, 3, 4, 5]
y_values = [20, 40, 60, 80, 100]
y2_values = [5, 10, 15, 20, 25]
"""
labels=['Y_values', 'Y2_values']
设置两个y列表的标识
"""
plt.stackplot(x_values, y_values, y2_values, labels=['Y_values', 'Y2_values'])
# 绘制图表说明参数
plt.title("maplotlib-test6", loc="center")
plt.xlabel("X", fontsize=14)
plt.ylabel("Y", fontsize=14)
# 保存并展示
plt.savefig("面积图.png", bbox_inches='tight')
plt.show()
import matplotlib.pyplot as plt
# 饼图图参数
labels = ['Pie 1', 'Pie 2', 'Pie 3', 'Pie 4']
x_values = [1000, 2000, 3000, 4000]
# 第三块离圆心远一些
explode = [0, 0, 0.1, 0]
"""
radius=1.0 设置饼图半径
labeldistance=1.1 每一块索引与中心的距离
"""
plt.pie(x_values, labels=labels, explode=explode, radius=1.0, labeldistance=1.1)
# 绘制图表说明参数
plt.title("maplotlib-test7", loc="center")
# 保存并展示
plt.savefig("饼图.png", bbox_inches='tight')
plt.show()
热力图的绘制稍微复杂亿点,代码:
import matplotlib.pyplot as plt
# 热力图参数
# 3x3的热力图
data = [[1.00, 0.90, 0.20],
[0.45, 0.56, 0.35],
[0.13, 0.67, 1.00]]
classes = ['class 1', 'class 2', 'class 3']
cmap = plt.cm.cool # plt提供的配色方案
plt.imshow(data, cmap=cmap)
plt.colorbar() # 显示右边的颜色条
# 绘制图表标题
plt.title("maplotlib-test8", loc="center")
"""
这两个方法是用来将x和y轴设置为自己想要的内容,
这里我们设置为classes。
前面的[0, 1, 2]是修改的位置列表,
也可以使用list(range(len(classes)))生成位置列表。
"""
plt.xticks([0, 1, 2], classes)
plt.yticks([0, 1, 2], classes)
# 保存并展示
plt.savefig("热力图.png", bbox_inches='tight')
plt.show()
好了,今天的课程就到这里,感兴趣的可以点赞收藏,我是wangzirui32,我们下次再见!