展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

Matplotlib基本使用(一)

  • 打开cmd安装
pip install matplotlib
  • 运行报错:AttributeError: module 'backend_interagg' has no attribute 'FigureCanvas'. Did you mean: 'FigureCanvasAgg'
# 解决方案
# 查看版本
pip show matplotlib
# 卸载
pip uninstall matplotlib
# 安装3.5
pip install matplotlib==3.5.0
  • 柱状图
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 能正确显示负号
plt.rcParams['axes.unicode_minus'] = False
# 设置画布大小
plt.figure(figsize=(11, 8))

path = r"C:\work\python\matplotlib_files\01.柱状图.xlsx"
data = pd.read_excel(path)
print(data)

# 排序
data.sort_values('分数', inplace=True, ascending=False)
# 绘制简单的柱形图
plt.bar(data.姓名, data.分数)
plt.show()

# plt.bar(x轴的刻度, y轴的高度, color='颜色', alpha='透明度0-1', lable='图例中的名称')
plt.bar(x=data.姓名, height=data.分数, color="red", alpha=0.5, label='分数')
# 将图例放到合适的位置
plt.legend()
# 设置坐标轴的名称
plt.xlabel('姓名', fontsize=20)
plt.ylabel('分数')
# 设置x坐标轴上的标签文字的效果,让x轴的刻度标签倾斜45度
plt.xticks(rotation=45)
# 替换x坐标轴刻度的标签名称
# plt.xticks(data.姓名, [0, 1, 2, 3, 4, 5])
# 设置标题
plt.title("成绩展示", fontsize=20)
# 设置y轴的刻度范围
plt.ylim(0, 120)
# 在指定位置添加标签
for x, y in enumerate(data.分数):
    plt.text(x, y, str(y), fontsize=20, va='bottom', ha='center', color='b')
# 保存到文件,dpi:分辨率
# plt.savefig('a01图表.png', dpi=200)
# 显示图形
plt.show()
  • 效果图
点击查看详情

  • 条形图
path = r"C:\work\python\matplotlib_files\01.柱状图.xlsx"
data = pd.read_excel(path)
print(data)

# 排序
data.sort_values('分数', inplace=True, ascending=True)
# x轴,y轴,高度,宽度,条形图
plt.bar(x=0, bottom=data.姓名, height=0.5, width=data.分数, orientation='horizontal')
# 标题
plt.title('班级成绩排名', fontsize=20)
# 刻度范围
plt.xlim(0, 120)
plt.show()
  • 效果图
点击查看详情

  • 分组柱状图
path = r"C:\work\python\matplotlib_files\03.分组柱状图.xlsx"
data = pd.read_excel(path)
print(data)

# 得到序号
b = np.arange(len(data.姓名))
w = 0.4
# x轴,高度,宽度,条形图
plt.bar(x=b, height=data.第一年, width=w, label='第一年')
plt.bar(x=b+w, height=data.第二年, width=w, label='第二年')
# 将x轴的刻度标签设置成姓名,倾斜45度
plt.xticks(b, data.姓名, rotation=45)
# 放置图例到合适的位置
plt.legend()
# x轴名称
plt.xlabel('姓名')
# 设置y轴的数据范围
plt.ylim(0, 120)
# 设置绘图区域边界
plt.gcf().subplots_adjust(bottom=0.3)
# 加第一年的数据标签
for x, y in enumerate(data.第一年):
    # x轴,y轴,显示的值,水平居中
    plt.text(x, y+1, str(y), ha='center')
# 加第二年的数据标签 w是柱状图的宽度
for x, y in enumerate(data.第二年):
    # x轴,y轴,显示的值,水平居中
    plt.text(x+w, y+1, str(y), ha='center')
plt.show()
  • 效果图
点击查看详情

  • 柱状堆积图
path = r"C:\work\python\matplotlib_files\04.堆叠柱状图.xlsx"
data = pd.read_excel(path)
print(data)

plt.bar(x=data.姓名, height=data.语文, width=0.8, bottom=0, label='语文')
plt.bar(x=data.姓名, height=data.数学, width=0.8, bottom=data.语文, label='数学')
plt.bar(x=data.姓名, height=data.英语, width=0.8, bottom=data.语文+data.数学, label='英语')
# 在顶部的中间显示图例
plt.legend(loc='upper center', ncol=3)
# 加网格线
plt.grid(axis='y')
# 加数据标签
for x, y in enumerate(data.语文):
    # x的位置,y的位置,文本值,垂直的顶部
    plt.text(x, y, str(y), va='top')
# 使用zip实现
for a1, a2, a3 in zip(data.姓名, data.语文, data.数学):
    plt.text(a1, a2+a3, str(a3), va='top')
# 添加英语的数据标签
for a1, a2, a3, a4 in zip(data.姓名, data.语文, data.数学, data.英语):
    plt.text(a1, a2+a3+a4, str(a4), va='top')
plt.show()
  • 效果图
点击查看详情

posted @ 2023-11-23 14:05  DogLeftover  阅读(60)  评论(0编辑  收藏  举报