python处理问题汇总三(字体显示,显示上标,x轴重叠,添加标签,保存图片等)


在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’这种无法实现。

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值