Har*_*Har 2 python matplotlib figure
我有以下matplotlib代码,它所做的全部是在x轴上绘制0-20,在y轴上绘制0-100
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(20))
ax.set_yticks(range(100))
labels = ax.set_yticklabels(range(100))
Run Code Online (Sandbox Code Playgroud)
我的问题是,并非所有标签实际上都适合y轴。
我要做的是将最大标签尺寸除以图形的总面积,以计算可以放入的标签数量,然后将数据分组为0-10、10-20、30-40部分并绘制而不是显示单个标签1,2,3,4,5,6,7,8 ...
我在查找标签的标签大小和图形的标签大小时遇到麻烦(如果我写错了,请纠正我,也许是像素的轴大小。这是我第一次使用matplotlib)
如何找出图形/轴占用的像素数(宽度+高度)以及每个标签的像素数(宽度+高度)?
小智 3
您可以使用 获取图中的轴范围ax.get_position(),请参阅有关的文档axes(我会发布一个链接,但我目前的声誉不允许这样做)。
刻度标签大小是在 matplotlibrc 文件中相对于字体大小定义的。请参阅此处的一些详细信息。默认大小为 12pt,可以使用以下命令更改
plt.rcParams['ytick.labelsize'] = small
Run Code Online (Sandbox Code Playgroud)
来自标准 matplotibrc 文件:
可以使用以下值相对于 font.size 定义特殊文本大小:xx-small、x-small、small、medium、large、x-large、xx-large、larger 或smaller
解决问题的最简单方法可能就是使用以下命令更改总图形大小
fig = plt.figure(figsize=(10,30))
Run Code Online (Sandbox Code Playgroud)
在您的情况下,结果如下(请注意,该示例有点极端)。如果刻度标签太多,您必须将总图形大小增加很多,则应考虑减小刻度标签大小(如上所示)或减少刻度标签的数量。
请注意,此过程涉及手动调整总图和/或刻度标签的大小,直到获得所需的输出。如果有更好的方法来做到这一点,我会很高兴看到。
您可以将绘图保存plt.savefig(output.png)在当前工作目录中。如果您使用plt.show()并且图像大于弹出窗口,则标签总是会弄乱,因为总数字缩小到窗口大小,但标签大小保持不变。
我希望这个答案对您有帮助。
| 归档时间: |
|
| 查看次数: |
5452 次 |
| 最近记录: |