matplotlib学习(1)

本文详细介绍了使用Matplotlib绘制各种图表的方法,包括设置图片大小、调整x和y轴刻度、保存图片为不同格式、绘制折线图观察气温变化、调整字体、设置网格背景以及绘制多个人的统计图并添加图例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

matplotlib基本要点

画出一天的气温图

程序例子:

from matplotlib import pyplot as plt
# 数据在X轴的位置,是一个可迭代对象
x = range(2, 26, 2)
# 数据在y轴的位置,是一个可迭代对象
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]
# 传入x和y,通过pyplot制图
plt.plot(x, y)
# 显示图片
plt.show()

效果图:
在这里插入图片描述
存在的问题:
在这里插入图片描述

改进程序

设置图片大小
plt.figure(figsize=(20, 8), dpi=80)

figure图形化图标的意思,在这里指的就是我们画的图
figsize表示图片的长和高
dpi指的是每英寸像素的个数
通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例
在图片模糊的时候传入dpi让图片更清晰

from matplotlib import pyplot as plt
# 数据在X轴的位置,是一个可迭代对象
x = range(2, 26, 2)
# 数据在y轴的位置,是一个可迭代对象
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]
# 设置图片大小
plt.figure(figsize=(20, 8), dpi=80)
# 传入x和y,通过pyplot制图
plt.plot(x, y)
# 显示图片
plt.show()
保存图片
# 设置保存位置以及名称
plt.savefig('./t1.png')
plt.savefig(‘sig_size.svg’)  # svg格式是矢量图格式,放大不会有锯齿状

自定义x, y轴刻度

plt.xticks(x)  # 把每一个x值赋值在刻度上
plt.xticks(range(2, 25))  # range方法控制x轴点数

_xtick_labels = [i/2 for i in range(4,49)]
plt.xticks(_xtick_labels)
plt.xticks(_xtick_labels[::2])  # 按步长取参数
完整程序
from matplotlib import pyplot as plt
# 数据在X轴的位置,是一个可迭代对象
x = range(2, 26, 2)
# 数据在y轴的位置,是一个可迭代对象
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]
# 设置图片大小
plt.figure(figsize=(20, 8), dpi=80)
# 传入x和y,通过pyplot制图
plt.plot(x, y)
# 设置x轴刻度
_xtick_labels = [i/2 for i in range(4,49)]
plt.xticks(_xtick_labels)
plt.xticks(_xtick_labels[::2])  # 按步长取参数

# 设置y轴刻度
plt.yticks(range(min(y), max(y)+1))  # 按步长取参数
# 显示图片
plt.show()
问题1:

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

代码如下
from matplotlib import pyplot as plt
import matplotlib
import random

x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]

font = {'family':'SimHei',
              'weight':'bold',
              'size':16}

matplotlib.rc('font', **font)

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

_x = [f'10点{i}分' for i in range(0, 60)]
_x += [f'11点{i}分' for i in range(0, 60)]

plt.xticks(list(x)[::3], labels=_x[::3], rotation=45)

plt.show()
字体调整
font = {'family':'SimHei',
              'weight':'bold',
              'size':16}

matplotlib.rc('font', **font)
设置标题
# 设置标题
plt.xlabel('时间')
plt.ylabel('温度(摄氏度)')
plt.title('10点到12点温度图')
完整代码
from matplotlib import pyplot as plt
import matplotlib
import random

x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]

# font = {'family':'MicroSoft YaHei',
font = {'family':'SimHei',
              'weight':'bold',
              'size':16}

matplotlib.rc('font', **font)

plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y)
# 调整横坐标
_x = [f'10点{i}分' for i in range(0, 60)]
_x += [f'11点{i}分' for i in range(0, 60)]

plt.xticks(list(x)[::3], labels=_x[::3], rotation=45)
# 设置标题
plt.xlabel('时间')
plt.ylabel('温度(摄氏度)')
plt.title('10点到12点温度图')

plt.show()

在这里插入图片描述

问题2

在这里插入图片描述

给折线统计图设置一个网格背景
# 设置显示网格(alpha网格透明度)
plt.grid(alpha=0.4)
完整代码如下
from matplotlib import pyplot as plt
import matplotlib

x = [i for i in range(11, 30)]
y = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 3, 3, 1, 1, 1]
# 显示中文,支持符号
matplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['axes.unicode_minus'] = False

plt.plot(x, y)
# 设置横纵坐标值
_x = [f'{i}岁' for i in range(11, 30)]
_y = [f'{i}个' for i in y]

plt.xticks(x[::2], _x[::2])
plt.yticks(y, _y)
# 设置显示网格(alpha网格透明度)
plt.grid(alpha=0.4)
# 设置标题
plt.xlabel('年龄')
plt.ylabel('个数')
plt.title('年龄交友个数')
plt.show()
问题3:

同时绘制两个人的统计图
在这里插入图片描述

新增图例功能
plt.legend()
代码如下:
from matplotlib import pyplot as plt
import matplotlib

x = [i for i in range(11, 30)]
y1 = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 3, 3, 1, 1, 1]
y2 = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
# 显示中文,支持符号
matplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['axes.unicode_minus'] = False

# 设置图片大小
plt.figure(figsize=(20, 8), dpi=80)

plt.plot(x, y1, label='自己')
plt.plot(x, y2, label='同桌')
# 设置横纵坐标值
_x = [f'{i}岁' for i in range(11, 30)]
_y = [f'{i}个' for i in y1]

plt.xticks(x[::2], _x[::2])
plt.yticks(y1, _y)

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



# 设置标题
plt.xlabel('年龄')
plt.ylabel('个数')
plt.title('年龄交友个数')
# 添加图例
plt.legend()
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值