matplotlib 笔记

2022-04-01 12:17:57 浏览数 (1)

matplotlib 官方文档

绘图

代码语言:javascript复制
# 导入
from matplotlib import pyplot as plt
# 或者
# import matplotlib.pyplot as plt

# 导入 numpy
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示 中文标签
plt.rcParams['axes.unicode_minus'] = False # 正常显示 负号

# 画布
#plt.figure()
plt.figure(figsize(7, 5))   # 创建图像区域,指定比例,缺省 1:1

# x轴, y轴刻度
# matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs)
plt.xticks()
plt.yticks()

# c=color 颜色
plt.scatter(x, y, c='c')  # scatter 散点图

plt.plot(x, y_line, c='r')  # 画线

plt.plot([1, 2, 3, 4], [1, 4, 2, 3])  # Matplotlib plot

plt.title('关系图')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.legend() # 显示图例

plt.ylim(0, 2.2) # 显示的y轴范围


# 保存图片
# 注意: 一定要在画完图后,show() 前
plt.savefig('D:test.png')


# 展示图
plt.show()

画图

饼状图

plt.pie(data'xColName', labels = labels)

代码语言:javascript复制
import pandas as pd
import matplotlib.pyplot as plt
catering_dish_profit = '../data/chapter3/demo/data/catering_dish_profit.xls'  # 餐饮数据
data = pd.read_excel(catering_dish_profit)  # 读取数据,指定“日期”列为索引

# 绘制饼图
x = data['盈利']
labels = data['菜品名']
plt.figure(figsize = (8, 6))
plt.pie(x, labels = labels)
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.title('菜品销售量分布(饼图)')
plt.axis('equal')
plt.show()

分布(条形图)

plt.bar(x, y)

代码语言:javascript复制
import pandas as pd
import matplotlib.pyplot as plt
catering_dish_profit = '../data/chapter3/demo/data/catering_dish_profit.xls'  # 餐饮数据
data = pd.read_excel(catering_dish_profit)  # 读取数据,指定“日期”列为索引

x = data['菜品名']
y = data['盈利']
plt.figure(figsize = (8, 4))
plt.bar(x, y)
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.xlabel('菜品')
plt.ylabel('销量')
plt.title('菜品销售量分布(条形图)')
plt.show()

折线图

plt.plot(data'xColName', data'yColName', color = '', label = 'yColName') 画折线图,关键在于 给出表格列名,需要显示的标签名,颜色 第一个参数列作 x轴,这里是月份,第二个参数列作 y轴,这里是部门销售额

代码语言:javascript复制
data = pd.read_excel("../data/chapter3/demo/data/dish_sale.xls")
plt.figure(figsize = (8, 4))

plt.plot(data['月份'], data['A部门'], color = 'green', label = 'A部门', marker = 'o')
plt.plot(data['月份'], data['B部门'], color = 'red', label = 'B部门', marker = 's')
plt.plot(data['月份'], data['C部门'], color = 'skyblue', label = 'C部门', marker = 'x')

plt.legend()  # 显示图例
plt.ylabel('销售额(万元)')
plt.show()
plt.axis()

plt.axis('equal') # 显示为圆(避免比例压缩为椭圆)

plt.hist() 直方图
代码语言:javascript复制
plt.hist(ffp_year, bins='auto', color='#0504aa')

bins : integer or array_like, optional 指定bin(箱子)的个数, 也就是总共有几条条状图

plt.pie() 饼图
代码语言:javascript复制
# 绘制 会员性别比例饼图
plt.pie([male, female], labels=['男', '女'], colors=['lightskyblue', 'lightcoral'], autopct='%1.1f%%')

调整X或Y轴上刻度

代码语言:javascript复制
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]

plt.plot(x, y)

# 设置 x 的刻度
plt.xticks() # 不填则自动

# 取步长作为 刻度
#plt.xticks(x[::2])

# 当刻度太密集时,用 `列表的步长(间隔取值)` 来解决,matplotlib 会自动帮我们对应
plt.show()

image-20201208131639112

不设置 xticks(),则自动 可以看到 x轴刻度自动生成

image-20201208131236486

plt.xticks(x::2) 可以看到x轴刻度: 2, 6, 10, ... 步长为 4

image-20201208131955707

常见问题

1. TypeError: bar() missing 1 required positional argument: 'x'

代码语言:javascript复制
plt.bar(left=range(3), height=[lv_four, lv_five, lv_six], width=0.4, alpha=0.8, color='skyblue')

TypeError: bar() missing 1 required positional argument: 'x'

解决: left 改为 x,版本问题,新 matplotlib 中改为x

  • 本文作者: yiyun
  • 本文链接: https://cloud.tencent.com/developer/article/1970523
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

0 人点赞