首页 > 其他 > 详细

matplotlib的使用

时间:2019-04-20 22:25:16      阅读:181      评论:0      收藏:0      [点我收藏+]

举个例子:

假设一天中每隔两个小时(range(2,26,2))的气温(℃)分别是[15,13,14.5,17,20,25,26,26,27,22,18,15],将其变成折线图进行展示

技术分享图片

在windows中系统中展示的图片如图:

 技术分享图片

现在来优化代码:

设置图片大小

from matplotlib import pyplot as plt

x = range(2, 26, 2) 
y = [15,13,14.5,17,20,25,26,26,27,22,18,15] 

# figure图形图标的意思,这里只画的图
# 通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例
# dpi 表示一个像素点的个数
plt.figure(figsize=(10, 7), dpi=80)

# 绘制折线图
plt.plot(x, y) 
# 保存(svg文件在浏览器中打开放大不会失帧)
plt.savefig(./sig_size.png)
# 展示图形
# plt.show() 

 

图片展示

技术分享图片

设置x,y轴的数值
from matplotlib import pyplot as plt

x = range(2, 26, 2) 
y = [15,13,14.5,17,20,25,26,26,27,22,18,15] 

plt.figure(figsize=(10, 7), dpi=80)

plt.plot(x, y) 

# 单独设置x轴
# _xticks = range(2, 26, 2) # list(_xticks): [2,4,6,8...]
_xticks = [i/2 for i in range(4, 49)] # [2.0, 2.5, 3.0, 3.5 .....]
# 刻度太密集可以使用列表步长
plt.xticks(_xticks[::3])
# y轴利用数据最小值最大值进行设置范围(最大值需要+1才能取到值)
plt.yticks(range(min(y), max(y)+1))
plt.show() 

技术分享图片

 

 举个例子

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

从逻辑上完成功能实现:

import random
from matplotlib import pyplot as plt

x = range(0, 120) 
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(16, 8), dpi=80)
plt.plot(x, y) 

# 设置x轴刻度
_xticks_label = [10点{}分.format(i) for i in range(60)]
_xticks_label += [11点{}分.format(i) for i in range(60)]
#rotation  旋转
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45)
plt.yticks(range(min(y), max(y)+1))
plt.show() 

 

 但是会发现字体出现问题

技术分享图片

所以需要解决字体的显示问题

技术分享图片

所以在windows,或者linux中,可能有效的办法:

import random
import matplotlib

from matplotlib import pyplot as plt

  # 这是windows和linux设置字体的方式
font = {
    family: MicroSoft YaHei,
    weight: bold,
    size: larger
}
matplotlib.rc("font", **font)
# 类似于matplotlib.rc("font", family=‘MicroSoft YaHei‘, weight=‘blod‘, size=‘larger‘)

x = range(0, 120) 
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(16, 8), dpi=80)
plt.plot(x, y) 

# 设置x轴刻度
_xticks_label = [10点{}分.format(i) for i in range(60)]
_xticks_label += [11点{}分.format(i) for i in range(60)]
#rotation  旋转
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45)
plt.yticks(range(min(y), max(y)+1))
plt.show() 

 

 但是不保证成功,因为电脑的字体配置情况不同

第二种推荐的方法:

自己设置字体文件:(字体库下载

import random
import matplotlib

from matplotlib import pyplot as plt
from matplotlib import font_manager

# 另一种设置字体的方式
my_font = font_manager.FontProperties(fname="./Hiragino Sans GB.ttc")

x = range(0, 120) 
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(16, 8), dpi=80)
plt.plot(x, y) 

# 设置x轴刻度
_xticks_label = [10点{}分.format(i) for i in range(60)]
_xticks_label += [11点{}分.format(i) for i in range(60)]
#rotation  旋转
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45, fontproperties=my_font)
plt.yticks(range(min(y), max(y)+1))
plt.show() 

 

技术分享图片

可以通过size属性设置字体大小:

plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45, fontproperties=my_font, size=12)

技术分享图片

 

matplotlib的使用

原文:https://www.cnblogs.com/pywjh/p/10742811.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!