文章目录
在python编程过程中可能遇到中文显示,英文字体设置,字符串上标显示,图片保存问题等问题。
1. python中文显示问题
方法一:
# 解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
方法二:
# 设置中文显示
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
font_size =20
mpl.rcParams['font.size'] = font_size
2. python设置Times New Roman字体
csfont = {'fontname': 'Times New Roman', 'weight': 'normal', 'size': 14}
加粗:
csfont = {'fontname': 'Times New Roman', 'weight': 'bold', 'size': 14}
3. 字符串显示上标
如显示R2指数的时候,直接在字符串上没法设置。
plt.ylabel('R2', **csfont)
设置如下就可以了:
plt.ylabel('R\u00b2', **csfont)
4. subplot绘图主标题(plt.suptitle)被覆盖
tight_layout会自动调整子图参数,使之填充整个图像区域。
解决办法:加一行代码
plt.tight_layout()
但是plt.tight_layout()只考虑子图的标签,轴标签和标题。因此,其他部分可能会被剪辑,也可能会重叠,如figure的suptitle。
解决方法:
plt.subplots_adjust(top=0.85) # top参数:调整子图集体所占版面的高度占整个figure的高度的比例
5. 保存图片设置分辨率,图片显示不全的问题
plt.savefig('test.tif', dpi=300, bbox_inches='tight')
dpi为设置的分辨率。
6. subplot绘制多张图片时,出现压缩图片的情况
可以先设置好画布的尺寸,如需要 4 * 3,12张图片摆放时,可以设置画布为(12,12)。
根据你的需要设置画布尺寸,
fig = plt.figure(figsize=(12, 12))
7. x轴重叠的问题
当x轴的标签比较长时,会出现重叠问题。
可以导入ticker库来解决这个问题,ticker可以改变数据轴的间距来解决日期显示不完整的问题。
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
# 根据ticker的功能改变第一个为初始的数据,第二个则为间隔
ticker_spacing = Date # 日期的字符串数组
ticker_spacing = 4
# 创建画布
fig, ax = plt.subplots(1, 1)
plt.plot(Date, V1, 'r', label='a')
plt.plot(Date, V2, 'blue', label='b')
plt.plot(Date, V3, 'black', label='c')
plt.plot(Date, V4, 'yellow', label='d')
# rotation=30 为倾斜的度数,因为日期较长,需要倾斜才能更清晰显示
ax.xaxis.set_major_locator(ticker.MultipleLocator(ticker_spacing))
plt.xticks(rotation=30)
8. python画图时添加标签
plt.text(x, y, s, fontsize, verticalalignment,horizontalalignment,rotation , **kwargs)
1. x,y表示标签添加的位置,默认是根据坐标轴的数据来度量的,是绝对值,也就是说图中点所在位置的对应的值,特别的,如果你要变换坐标系的话,要用到transform=ax.transAxes参数。
2. s表示标签的符号,字符串格式,比如你想加个“我爱三行科创”,更多的是你标注跟数据有关的主体,你如实写便是。
3. fontsize顾名思义就是你加标签字体大小了,取整数。
4. verticalalignment表示垂直对齐方式 ,可选 ‘center’ ,‘top’ , ‘bottom’,‘baseline’ 等
5. horizontalalignment表示水平对齐方式 ,可以填 ‘center’ , ‘right’ ,‘left’ 等
6. rotation表示标签的旋转角度,以逆时针计算,取整
7. 后面还有 family 用来设置字体,style 设置字体的风格,weight 字体的粗细, bbox 给字体添加框,如 bbox=dict(facecolor=‘red’, alpha=0.5) 等,各种风格,应有尽有,总有一款适合你。
plt.text()只能在坐标轴内根据数据添加标签,想要在图片右上角添加图’a’,'b’这种无法实现。