matplotlib.pyplot画图,设置x轴y轴范围,没有作用

matplotlib.pyplot画图,设置x轴y轴范围,没有作用

现在有一组数据,需要绘图,同时需要固定住y轴范围最大值。但是通过方法设置后依然无效。经过尝试发现因为数据是字符类型的原因,导致设置的y轴范围失效。

无效的具体展示

io = open("D:/Desktop/采集数据/数据A/2022-05-29/2022-05-29_08.28/震动数据 2022-05-29-08-28-49.json", "r")
readlines = io.readlines()
data = readlines[1]
split = data.strip("[]").split(",")
import matplotlib.pyplot as plt
figure = plt.figure(figsize=(9, 9))
plt.subplot(1, 1, 1)
plt.ylim(ymax=10, ymin=0)
plt.plot(split)
plt.show()

在这里插入图片描述

由上诉代码段,可以看出以及通过plt.ylim()方法设置好了y轴范围,但是并没有起到作用。

查询原因

  • 查看split的内容以及类型:
print(split[:10])
# ['0.5514042', '0.541391969', '0.5968254', '0.539438367', '0.4849817', '0.537240565', '0.5650794', '0.5814408', '0.5619048', '0.4998779']
print(type(split[0]))
# <class 'str'>
> 可以看到这个列表里面的内容是字符类型

解决问题

  • 变换类型
io = open("D:/Desktop/采集数据/数据A/2022-05-29/2022-05-29_08.28/震动数据 2022-05-29-08-28-49.json", "r")
readlines = io.readlines()
data = readlines[1]
split = data.strip("[]").strip("]\n").split(",")
import matplotlib.pyplot as plt
figure = plt.figure(figsize=(9, 9))
plt.subplot(1, 2, 1)
plt.ylim(ymax=10, ymin=0)
plt.plot(split[:10])
# ---------类型转后绘图------------#
split = [float(x) for x in split]
plt.subplot(1, 2, 2)
plt.ylim(ymax=10, ymin=0)
plt.plot(split[:10])
plt.show()

在这里插入图片描述

### Matplotlib 中文显示问题解决方案 在使用 `matplotlib.pyplot` 进行绘图时,中文无法正常显示是一个常见问题。以下是几种有效的解决方法: #### 方法一:设置全局字体属性 可以通过修改 `rcParams` 来设置全局字体属性,确保支持中文字符。例如,假设系统中已经安装了 `'SimHei'` 字体,则可以按以下方式进行配置[^2]: ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为黑体 plt.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示为方块的问题 ``` 此方法适用于整个脚本范围内的所有图表绘制操作。 #### 方法二:局部设置字体属性 如果仅需在特定情况下应用中文显示,可以在具体绘图命令中单独指定字体参数。例如: ```python import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 2 * np.pi, 200) y = np.sin(x) fig, ax = plt.subplots() ax.plot(x, y) ax.set_title("你好", fontsize=24, fontproperties='SimHei') # 局部设置字体 ax.set_xlabel("这是 X 标签", fontsize=14, fontproperties='SimHei') plt.text(0.5, 0.5, '这是一段文本', fontdict={'family': 'SimHei', 'size': 16}) plt.show() ``` 这种方法不会影响其他部分的默认样式设定[^3]。 #### 方法三:动态加载可用字体列表并选择合适的字体 有时可能不确定应该选用哪种具体的中文字体名称,或者希望程序具备一定的自适应能力。这时可通过遍历系统中存在的所有字体文件来找到适合的一种: ```python from matplotlib.font_manager import FontManager import subprocess fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True).decode().splitlines() available_chinese_fonts = list(set(output)) print("Available Chinese Fonts:", available_chinese_fonts) if available_chinese_fonts: selected_font = available_chinese_fonts[0] else: raise Exception("No suitable Chinese fonts found!") plt.rcParams['font.sans-serif'] = [selected_font] plt.rcParams['axes.unicode_minus'] = False ``` 以上代码片段会尝试自动探测当前操作系统环境下存在的任何一种适配汉语环境渲染需求的字形资源,并将其绑定至后续作图流程当中去[^3]。 --- ### 总结 无论是采取何种策略调整相关参数值以实现更好的国际化兼容效果,都需要提前验证目标机器之上确实存在对应类型的TrueType格式矢量图形描述数据集才行。如果没有预装必要的语言包组件的话,那么即便设置了再多合理的选项组合也无法达到理想的效果表现形式出来。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值