matplotlib的基本用法,并在横坐标中以及其他部分显示中文

本文主要讲解matplotlib的基本用法,方便自己以后使用该库进行画图。主要内容有:基本绘制一个图形、横坐标改为中文标尺、添加标题标签等。

看完这一例题,使用matplotlib画图,应该就没什么问题了。

1.绘制基本图形

题目:随机生成10点到12点(120分钟)之间的温度,并绘制出图形。

from matplotlib import pyplot as plt
import random

x = range(0,120)
y = [random.randint(20,35) for i in range(120)] #随机产生20-35度的气候温度

plt.plot(x,y)
plt.show()

 x为产生的0-120分钟的时间序列,间隔一分钟

y为随机生成120个气候温度,温度范围为20-35度之间。

通过plt.plot()和plt.show()函数展示出图形,一个最基本的图形就绘制出来了,如下图所示:

在图中,横坐标为0-120之间的数字,表示分钟。

题目中表示的是10点到12点,为了更好的观看图形,需要将横坐标变换成对应时间。

2.横坐标改为中文

需要修改横坐标,就需要修改横坐标的标尺,使用plt.xticks(x_value,x_change)去修改。

x_value:原来的坐标值

x_change:修改后的坐标值(可为字符串)

2.1生成x_chage的值

因为横坐标是要不断改变的,这里每隔一分钟,是需要+1的,但是字符串又不能直接+1,所以需要简单将时间处理一下。

原始坐标:0到120之间不断加1

修改后坐标:10点0分到11点0分,再到12点0分不断加1

x_change = ["10点{}分".format(i) for i in range(60)] #每隔60分钟,就需要进1,转下一行代码
x_change += ["11点{}分".format(i) for i in range(60)] #如果需要继续12点,复制这一行代码,将11点改为12点

plt.xticks(list(x)[::5], x_change[::5],rotation=45) #[::5]表示需要显示的间隔数,数字越大越稀疏,越小越密集,根据需要修改

使用上两行代码,x_change的值就从10点0分开始,一直加到12点0分。

然后通过最下面的一行代码,把修改的值加到横坐标系当中,rotation=45表示文字旋转45度,得到下图所示:

图中的中文部分变成了白框,没有显示中文,这是因为在matplotlib中不支持中文显示,为了将中文显示出来需要进行一些修改。

2.2显示中文

本文以自己的windows电脑为例,在代码中加入下面两行代码:

from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")
C:\Windows\Fonts\msyh.ttc 为windows只带的字体路径,根据需要修改需要的路径参数即可。

修改好字体后,需要将字体应用到横坐标中,如图:

再次绘图,坐标系中就可以显示出中文。

2.3小结

将上述代码合并

from matplotlib import pyplot as plt
import random
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")

x = range(0,120)
y = [random.randint(20,35) for i in range(120)] #随机产生20-35度的气候温度

plt.plot(x,y)

x_change = ["10点{}分".format(i) for i in range(60)] #每隔60分钟,就需要进1,转下一行代码
x_change += ["11点{}分".format(i) for i in range(60)] #如果需要继续12点,复制这一行代码,将11点改为12点
plt.xticks(list(x)[::5], x_change[::5],rotation=45,fontproperties=my_font) #[::5]表示需要显示的间隔数,数字越大越稀疏,越小越密集,根据需要修改

plt.show()

得到的图形效果如下:

此时,中文可以显示出来。

3.添加其他信息

为了让图形显示更多的信息,需要给横纵坐标显示标签,并且给整个图形加上一个标题,需要增加如下代码:

plt.xlabel("时间")
plt.ylabel("温度")
plt.title("10点-12点的温度变化情况")

给横纵坐标加上时间、温度标签,并加上一个标题。但由于不支持中文,所以没办法,需要将之前调好的字体my_font应用进来,对代码做如下修改:

plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度", fontproperties=my_font)
plt.title("10点-12点的温度变化情况", fontproperties=my_font)

这样就可以显示出中文,在matplotlib中,其他需要显示中文的地方也是如此操作。

4.总结

整体代码:

from matplotlib import pyplot as plt
import random
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")

x = range(0,120)
y = [random.randint(20,35) for i in range(120)] #随机产生20-35度的气候温度

plt.plot(x,y)

x_change = ["10点{}分".format(i) for i in range(60)] #每隔60分钟,就需要进1,转下一行代码
x_change += ["11点{}分".format(i) for i in range(60)] #如果需要继续12点,复制这一行代码,将11点改为12点
plt.xticks(list(x)[::5], x_change[::5],rotation=45,fontproperties=my_font) #[::5]表示需要显示的间隔数,数字越大越稀疏,越小越密集,根据需要修改

plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度", fontproperties=my_font)
plt.title("10点-12点的温度变化情况", fontproperties=my_font)

plt.show()

效果图:

根据如上方法,可以较好的解决matplotlib绘图中中文显示的问题,并掌握一些基本的绘图函数以及方法。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值