这里主要记录下常用设置:
import numpy as np import matplotlib.pyplot as plt # 设定图片大小 fig, ax = plt.subplots(figsize=(8, 6)) # 设定中文字体,保证中文显示正常 plt.rcParams[‘font.sans-serif‘]=‘simhei‘ # 定义标签字体大小 font1 = {‘family‘ : ‘simhei‘, ‘weight‘ : ‘normal‘, ‘size‘ : 18,} # 生成x, y数据 x = np.arange(0., 5., 0.2) y1 = x**2 y2 = x**3 # 设置x轴,y轴,title标签 plt.xlabel("我是X", fontdict=font1) plt.ylabel("我是Y", fontdict=font1) plt.title("这是一幅图", fontdict=font1) # 设置x, y显示范围 plt.xlim(0, 5) plt.ylim(0, max(y1)) # 设置x, y显示刻度 _xtick_labels = [i/2 for i in range(0,11)] # 把默认的每隔1改成了每隔0.5 plt.xticks(_xtick_labels) _ytick_labels = [i for i in range(0, int(max(y1))+2)] plt.yticks(_ytick_labels[::2]) # 如果过于密集,可以取步长,这里变成了每隔2 # 设置框线显示,不显示上边框和右边框 ax.spines[‘right‘].set_visible(False) ax.spines[‘top‘].set_visible(False) # 画图 plt.plot(x, y1, label="curve1") plt.plot(x, y2, label="curve2") # 显示图例 plt.legend() # 保存图片 plt.savefig("test.png", bbox_inches = ‘tight‘)
运行结果如下:
下面还可以对X,Y轴的刻度进行替换,保证_x和_xtick_labels的大小相同:
# 刻度替换 _x = range(0, 6) _xtick_labels = ["I‘m {}".format(i) for i in _x] plt.xticks(_x, _xtick_labels)
运行结果如下:
下面再举一个散点图的例子:
import matplotlib.pyplot as plt import random, matplotlib fig, ax = plt.subplots(figsize=(18, 6)) x = range(1, 32) a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23] b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6] x2 = range(41, 72) _x = list(x)+list(x2) xtick_labels = ["3月{}号".format(i) for i in x] xtick_labels += ["10月{}号".format(i) for i in x] plt.xticks(_x[::2], xtick_labels[::2], rotation=45) plt.xlabel("时间", font1) plt.ylabel("温度", font1) plt.title("3月和10月温度变化", font1) plt.scatter(x, a, label="3月份") plt.scatter(x2, b, label="10月份") plt.legend()plt.savefig("test.png", bbox_inches = ‘tight‘)
运行结果如下:
从上图可以看到保存的图片X轴标签显示不完整,我们修改plt.savefig中的参数,使用bbox_inches=‘tight’,即可正常显示:
plt.savefig("test.png", bbox_inches = ‘tight‘)
原文地址:https://www.cnblogs.com/yunxiaofei/p/11109703.html
时间: 2024-11-14 11:27:56