Python数据处理

matplotlib

概念

  • matplotlib能将数据进行可视化,更加直观的呈现

  • 使数据更客观,更有说服力

matplotlib是最流行的Python底层绘图库,主要做数据可视化图表,名字取材于matlab,模仿matlab创建

matplotlib官方文档

绘制折线图

from matplotlib import pyplot as plt


x = range(2, 26, 2)  # 数据在X轴的位置,是一个可迭代对象

y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]  # 数据在Y轴的数据,是一个可迭代对象

# x轴和y轴的数据一起组成了所有要绘制出的坐标

plt.plot(x, y)  # 传入x和y,通过plot绘图

plt.show()  # 程序在执行的时候展示图形

设置图片大小

fig = plt.figure(figsize=(20, 8), dpi=80)  # 宽20高8,

"""
figure图形图标的意思,在这里指的是我们画的图
通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例
在图像模糊的时候可以传入dpi参数,让图片更加清晰
"""

保存图片

plt.savefig("./sig_size.png")  # 保存图片,可以保存为svg格式的矢量图

定义坐标轴的疏密

# 设置x轴的刻度
plt.xticks(range(2, 25, 2))  # 步长为刻度,刻度为2(疏密)
# plt.xticks([i / 2 for i in range(4, 50)])  # 刻度为0.5,即可以使用等差列表来去调整刻度(疏密)

# 设置y轴刻度
plt.yticks(range(min(y), max(y)+1, 2))  # y轴范围为13到26

总代码

from matplotlib import pyplot as plt


fig = plt.figure(figsize=(20, 8), dpi=80)  # 宽20高8,

"""
figure图形图标的意思,在这里指的是我们画的图
通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例
在图像模糊的时候可以传入dpi参数,让图片更加清晰
"""

x = range(2, 26, 2)  # 数据在X轴的位置,是一个可迭代对象
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]  # 数据在Y轴的数据,是一个课迭代对象
# x轴和y轴的数据一起组成了所有要绘制出的坐标

plt.plot(x, y)  # 传入x和y,通过plot绘图

# 设置x轴的刻度
plt.xticks(range(2, 25, 2))  # 步长为刻度,刻度为2(疏密)
# plt.xticks([i / 2 for i in range(4, 50)])  # 刻度为0.5,即可以使用等差列表来去调整刻度(疏密)

# 设置y轴刻度
plt.yticks(range(min(y), max(y)+1, 2))  # y轴范围为13到26

# plt.savefig("./sig_size.png")  # 保存图片,可以保存为svg格式的矢量图

plt.show()  # 程序在执行的时候展示图形

案例

import random
from matplotlib import pyplot as plt

"""如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟的气温变化"""
a = [random.randint(20, 35) for i in range(120)]

fig = plt.figure(figsize=(20, 8), dpi=80)  # 宽20高8

x = [i for i in range(1, 121)]
y = a

plt.xticks([2 * i for i in range(1, 61)])
plt.yticks([i for i in range(20, 36)])

plt.plot(x, y)

plt.show()

定义坐标轴的刻度

# 在10点时
x_label = [f"10h{
     i}m" for i in range(1, 61, 2)]
# 在11点时
x_label += [f"11h{
     i}m" for i in range(1, 61, 2)]

plt.yticks([i for i in range(20, 36)], [f"{
     i}f" for i in range(20, 36)])  # 后面的参数设置坐标轴显示的样式
plt.xticks([2 * i for i in range(1, 61)], x_label)  # 一一对应

设置字体显示中文

为什么无法显示中文

  • matplotlib默认不显示中文字符,因为默认的英文字体无法显示汉字

fc-list :lang=zh

  • Mac和linux里面查看支持的中文
# windows和linux设置字体的方式
import matplotlib
font = {
   'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': 12}
matplotlib.rc("font", **font)

from matplotlib import font_manager
my_font = font_manager.FontProperties(fnanme="字体路径")  # 后面使用时输入fontproperties=my_font
# 如:plt.ylabel("温度 单位(摄氏度)", fontproperties=my_font)

添加描述信息

# 设置描述信息
plt.xlabel("时间")
plt.ylabel("温度 单位(摄氏度)")
plt.title("10点到12点没分钟内的气温变换情况")

改进后

import random
from matplotlib import pyplot as plt

"""如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟的气温变化"""
a = [random.randint(20, 35) for i in range(120)]

fig = plt.figure(figsize=(20, 8), dpi=80)  # 宽20高8

x = [i for i in range(0, 120)]
y = a

# 在10点时
x_label = [f"10h{
     i}m" for i in range(1, 60)]
# 在11点时
x_label += [f"11h{
     i}m" for i in range(1, 60)]

import matplotlib
font = {
   'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': 12}
matplotlib.rc("font", **font)

# 设置描述信息
plt.xlabel("时间")
plt.ylabel("温度 单位(摄氏度)")
plt.title("10点到12点每分钟内的气温变换情况")

plt.yticks([i for i in range(20, 36)], [f"{
     i}度" for i in range(20, 36)])  # 后面的参数设置坐标轴显示的样式
plt.xticks(x[::3], x_label[::3], rotation=90)  # 要保证前后的一一对应,rotation旋转度数
plt.plot(x, y)

plt.show()

绘制网格线

# 绘制网格
plt.grid(alpha=0.4)  # alpha设置透明度

案例

# 表示出从一个月11号到最后一天30号内每天做的题数如列表a,请绘制折线图,以便分析每天做题的走势
a = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
# 要求:y轴表示个数、x轴表示日期
from matplotlib import pyplot as plt
import matplotlib

# 自己
y = a
x = [i for i in range(11, 31)]

plt.figure(figsize=(20, 8), dpi=80)

# 但是,半路杀出了一个同桌,请设计一个折线图,表示两者做题数量
y_c = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]

# 设置轴参数
plt.yticks([i for i in range(min(a), max(a)+1)], [f"{
     i}人" for i in range(min(a), max(a)+1)])
plt.xticks(x[::4], [f"{
     i}号" for i in range(11, 31, 4)], rotation=90)

plt.xlabel("日期(号)")
plt.ylabel("数量(题)")
plt.title("每天的做题数量情况")

# 绘制网格
plt.grid(alpha=0.4)  # 设置透明度

# 设置字体
font = {
   'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': 12}
matplotlib.rc("font", **font)

# 自己
plt.plot(x, y, label="自己", color="red")  # color添加颜色
# 同桌
plt.plot(x, y_c, label="同桌", color="blue", linestyle='--')  # linestyle设置线条样式

# 添加图例
plt.legend(loc="upper left")  # loc设置位置

plt.show()

绘制散点图

from matplotlib import pyplot as plt  # 其他元素可以直接使用折线图来表示

# 使用scatter绘制散点图和绘制折线图的代码区别
plt
  • 7
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveKenny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值