在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()
图片展示
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()
从逻辑上完成功能实现:
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
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)
原文:https://www.cnblogs.com/pywjh/p/10742811.html