matplotlib库基本使用方法(一)


matplotlib功能初探


为了更好地理解所有基础绘图功能,我们通过天气温度变化的绘图来融合所有的基础API使用

需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度

效果:
准备数据并画出初始折线图

import matplotlib.pyplot as plt
import random

# 画出温度变化图
# 0.准备x, y坐标的数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]

# 1.创建画布
plt.figure(figsize=(20, 8), dpi=80)

# 2.绘制折线图
plt.plot(x, y_shanghai)

# 3.显示图像
plt.show()

效果
在这里插入图片描述

添加自定义x,y刻度

# 画出温度变化图

# 0.准备x, y坐标的数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]

# 构造x轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
# 构造y轴刻度
y_ticks = range(40)

# 修改x,y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

# 1.创建画布
plt.figure(figsize=(20, 8), dpi=80)

# 2.绘制折线图
plt.plot(x, y_shanghai)

# 3.显示图像
plt.show()

效果
在这里插入图片描述

添加网格显示
linestytle可以由很多种形式,譬如虚线,实线,alpha代表透明度

#为了更加清楚地观察图形对应的值
plt.grid(True, linestyle='--', alpha=0.5)

添加描述信息
添加x轴、y轴描述信息及标题,通过fontsize参数可以修改图像中字体的大小

plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20)

图像保存

# 保存图片到指定路径
plt.savefig("test.png")

解决中文乱码问题:
首先下载这中文包

 链接:https://pan.baidu.com/s/18s4lJwMXKQgGXLmmMoE22Q 

 提取码:dv57

查找本地文件存放目录。

import matplotlib
# 查找字体存放位置,把ttc格式的字体,放在这个文件夹内
print(matplotlib.matplotlib_fname())
# 查找字体缓存位置,放置新字体后,删除这个文件夹
print(matplotlib.get_cachedir())

在这里插入图片描述

进入到自己的路径,更改配置文件,建议用vscode打开,用ctrl+f查找定位更改

# 去掉前面的#     
font.family         : sans-serif
# 去掉前面的#,并在冒号后面添加SimHei
font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif  
# 去掉前面的#,并将True改为False
axes.unicode_minus  : False

同时进入到ttf目录,把下载好的SimHei.ttf粘贴到这个目录。

cd C:\ProgramData\Anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

在这里插入图片描述

进入到C:\Users\Administrator.DESKTOP-I1RC48K.matplotlib目录,删除缓存文件。
在这里插入图片描述
如果上述方法都不行,那就暴力解决,每次绘图前加入下面两行

import matplotlib.pyplot as plt

# 设置字体为黑体,解决Matplotlib中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']

# 解决Matplotlib坐标轴负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus']=False

本节完整代码

import matplotlib.pyplot as plt 
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
plt.figure(figsize=(20,8),dpi=100)
x_ticks_label=["11点{}分".format(i) for i in x]
y_ticks=range(46)
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
plt.plot(x,y_shanghai)
plt.grid(True,linestyle='-',alpha=0.5)
plt.xlabel("时间")
plt.ylabel("温蒂")
plt.title("中午11点0分到12点之间的温度变化图示",fontsize=20)
plt.savefig("test.png")
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值