栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用matplotlib绘制简单的折线、柱状、饼图

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用matplotlib绘制简单的折线、柱状、饼图

学习目标:

使用matplotlib绘制简单的折线、柱状、饼图


学习内容:

1、使用matplotlib绘制简单的折线图

首先我们要导入matplotlib包

import matplotlib
import matplotlib.pyplot as plt

如果出现乱码则可以在导入包后使用如下代码段

# 处理乱码
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体正常显示中文标签

不论我们做什么图都需要数据的支撑,所以我们需要导入数据

比如x,y轴的刻度值与范围,以及数据的x,y值

① 设置x,y轴的刻度值与范围

# 设置x,y轴的刻度
x = [1, 2, 3, 4]
y = [0, 20, 40, 60, 80, 100, 120]

② 传入数据值

# 传入数据
x1 = [1, 2, 3, 4]
y1 = [10, 50, 20, 100]
# "b"为蓝色
plt.plot(x1, y1, "b")

③ 设置x,y轴与其标签和表格标题

# x轴的刻度的字体倾斜度为30
plt.xticks(x, rotation=30)
# y轴的刻度的字体倾斜度为30
plt.yticks(y, rotation=30)
# x轴标签
plt.xlabel("离校日期")
# y轴标签
plt.ylabel("离校人数")
# 表格标题
plt.title("五一假期离校情况")

④ 出图

plt.show()

这样我们就完成了一个简单的折线图

 此时虽然我们有了折线图但是不免单调,当我们想让折线上显示数据的时候该怎么做呢?

我们需要增加这样一个代码段来让它显示它的数据内容:

# 在折线图上显示具体数值, ha参数控制水平对齐方式, va控制垂直对齐方式, fontsize控制字体大小, rotation控制倾斜度
for a, b in zip(x1, y1):
    plt.text(a, b + 1, str(b), ha='center', va='bottom', fontsize=15, rotation=30)

这样我们就得到了

如果你仍然觉得不够好看,想让数据点以特殊符号表明出来让它更加亮眼,我们就可以将折线图代码改为这样:

# "b"为蓝色, ms用来设置*的大小
plt.plot(x1, y1, "b", marker='*', ms=10)

这样我们就能得到这样的效果:

是不是漂亮多了?

 如果你想把我们跑出来的数据图保存在本地,那我们就可以在出图前加这样一段代码:

# 在py文件同一目录下 下载名为折线图的jpg文件
plt.savefig("折线图.jpg")

这样就可以在你的py文件同一目录下得到我们的图例。

如果我们有多组数据的话要如何将其在代码中实现呢?

我们只需要多写一段折线图代码,第二组数据可以采用上文中传数据的办法,也可以直接写入,如:

# "r"为红色, ms用来设置*的大小
plt.plot([1, 2, 3, 4], [20, 30, 80, 40], "r", marker='*', ms=10)

这样我们就可以得到这样的两组数据图:

多组数据的时候方法是一样的。 

显示数据值也与上文方法一致,只需要增加代码:

for a, b in zip([1, 2, 3, 4], [20, 30, 80, 40]):
    plt.text(a, b + 1, str(b), ha='center', va='bottom', fontsize=15, rotation=30)

当多组数据的时候是不是有些混乱不知道这些数据是哪一组?这个时候我们就需要图例:

# upper left 将图例显示到左上角
plt.legend(loc="upper left")

既然有图例那就需要标签,所以我们需要在折线图代码中增加label标签,像这样:

# "b"为蓝色, "r"为红色, ms用来设置*的大小
plt.plot(x1, y1, "b", marker='*', ms=10, label="1班")
plt.plot([1, 2, 3, 4], [20, 30, 80, 40], "r", marker='*', ms=10, label="2班")

这样我们就能得到一个漂亮的多组数据折线图:

 

 2、使用matplotlib绘制简单的柱状图

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# 处理乱码
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体正常显示中文标签
# 设置x,y轴的刻度
x = [1, 2, 3, 4]
y = [0, 20, 40, 60, 80, 100, 120]
# 传入数据
x1 = x
y1 = [10, 50, 20, 100]
# 设置宽度
width = 0.3
# 设置柱状图的数量
a = np.arange(4)
# "b"为蓝色, "r"为红色
plt.bar(a, y1, width=width, color='b', label='1班')
plt.bar(a+width, [20, 30, 80, 40], width=width, color='r', label='2班')
# x轴的刻度的字体倾斜度为30
plt.xticks(a, x, rotation=30)
# y轴的刻度的字体倾斜度为30
plt.yticks(y, rotation=30)
# x轴标签
plt.xlabel("离校日期")
# y轴标签
plt.ylabel("离校人数")
# 表格标题
plt.title("五一假期离校情况")
# upper left 将图例显示到左上角
plt.legend(loc="upper left")
# 在柱状图上显示具体数值, ha参数控制水平对齐方式, va控制垂直对齐方式, fontsize控制字体大小, rotation控制倾斜度
for i, j in zip(a, y1):
    plt.text(i, j, str(j), ha='center', va='bottom', fontsize=15, rotation=30)
for i, j in zip(a, [20, 30, 80, 40]):
    plt.text(i+width, j, str(j), ha='center', va='bottom', fontsize=15, rotation=30)
# 在py文件同一目录下 下载名为柱状图的jpg文件
plt.savefig("柱状图.jpg")
plt.show()

柱状图完成效果如下:

  3、使用matplotlib绘制简单的饼图

import matplotlib
import matplotlib.pyplot as plt
# 处理乱码
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体正常显示中文标签
# 传入数据
data = {'1号': 10, '2号': 50, '3号': 20, '4号': 100}
x = [i for i in data]
y = [j for j in data.values()]
# 控制画布大小
plt.figure(figsize=(15, 15))
# autopct用来输出数据所占据的比例, textprops规定字体大小, labeldistance规定数据距离饼图的位置
plt.pie(y, labels=x, autopct="%.2f%%", colors=['c', 'm', 'y', 'b'],
        textprops={'fontsize': 24}, labeldistance=1.1)
# 饼图标题
plt.title("五一假期1班离校情况", fontsize=30)
# upper left 将图例显示到左上角
plt.legend(loc="upper left", fontsize=20)
# 在py文件同一目录下 下载名为饼图的jpg文件
plt.savefig("饼图.jpg")
plt.show()

饼图完成效果如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/858897.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号