针对matplotlib中带有标题、轴标签的确切图形大小和matplotlib坐标轴标签这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展matplotliby轴标签在右侧、matplotli
针对matplotlib 中带有标题、轴标签的确切图形大小和matplotlib坐标轴标签这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展matplotlib y轴标签在右侧、matplotlib 设置图形大小 figsize dpi、matplotlib 设置图形大小时 figsize 与 dpi 的关系、matplotlib中LaTeX轴标签的粗体字体粗细等相关知识,希望可以帮助到你。
本文目录一览:- matplotlib 中带有标题、轴标签的确切图形大小(matplotlib坐标轴标签)
- matplotlib y轴标签在右侧
- matplotlib 设置图形大小 figsize dpi
- matplotlib 设置图形大小时 figsize 与 dpi 的关系
- matplotlib中LaTeX轴标签的粗体字体粗细
matplotlib 中带有标题、轴标签的确切图形大小(matplotlib坐标轴标签)
以前也有人问过类似的问题,但我所有的搜索结果都没有解决我的问题。采取以下示例代码:
from matplotlib.pyplot import *fig = figure(1, figsize=(3.25, 3))plot([0,1,5,2,9])title(''title'')xlabel(''xAxis'')ylabel(''yAxis'')fig.savefig(''test.png'',dpi=600)
结果图形为 2040x1890 像素,即 3.4”x3.15”,x-label 被截断。在图像编辑器中查看 PNG 文件,轴和刻度标签似乎符合所需的大小。我尝试从输出大小和请求大小中获取差异并将其反馈回 (3.25 - (3.4-3.25) = 3.10,但 matplotlib 似乎添加了一个任意缓冲区,但它仍然没有达到所需的大小. 一个人如何制作出所需尺寸的整体图?
答案1
小编典典与大卫罗宾逊的评论一致,此处生成的数字是 3.25 x 3 英寸,由 Photoshop 测量,尽管 xlabel 确实显示截止(python 2.6 64 位中的 mpl 1.1.0,win7)
解决该问题的一种方法是手动调整边距subplot_adjust
:
from matplotlib.pyplot import *fig = figure(1, figsize=(3.25, 3))plot([0, 1, 5, 2, 9])title(''title'')xlabel(''xAxis'')ylabel(''yAxis'')subplots_adjust(bottom=0.14) # <--fig.savefig(''test.png'', dpi=600)
这些边距的默认值在 matploblibrc 文件中设置,您可以在那里永久修改它。在我的例子中,下边距的默认值为 0.10。
如果您的图形尺寸错误或正确,例如我的情况,您可以使用 subplot_adjust 为标签提供足够的空间。然后,如果需要,您可以计算校正以获得您想要的实际图片或图形大小,就像您已经做的那样。
保存图形的最终视图取决于该图形的大小。如果您show()
将您的图形保存在 matplotlib 视图框架中,您将在图像中获得标签截断。但是,如果您手动增加图像的大小,您将看到标签出现,如果您保存它,它也会出现在保存的图像中。可以说这是所见即所得。你的身材很小,这会让你的标签被剪掉。所以另一种方法是制作一个更大的数字,也许用较低的 dpi 来保持整体大小。这也有效:
from matplotlib.pyplot import *fig = figure(1, figsize=(6.5, 6)) # <---plot([0, 1, 5, 2, 9])title(''title'')xlabel(''xAxis'')ylabel(''yAxis'')fig.savefig(''test.png'', dpi=300) # <---
在任何情况下,我都会认为这是一个 matplolib 错误,因为您可以期望在绘图和保存后有一个未切割的数字。
matplotlib y轴标签在右侧
是否有一种简单的方法可以将y轴标签放在图的右侧?我知道可以使用来对刻度标签进行此操作ax.yaxis.tick_right()
,但是我想知道是否也可以对轴标签进行此操作。
我想到的一个想法是使用
ax.yaxis.tick_right()ax2 = ax.twinx()ax2.set_ylabel(''foo'')
但是,在保留y轴的范围的同时,将所有标签(刻度和轴标签)放置在右侧并没有达到预期的效果。简而言之,我想要一种将所有y轴标签从左向右移动的方法。
答案1
小编典典看来您可以使用以下方法做到这一点:
ax.yaxis.set_label_position("right")ax.yaxis.tick_right()
请参阅此处的示例。
matplotlib 设置图形大小 figsize dpi
figure语法说明
- figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
- num: 图像编号或名称,数字为编号 ,字符串为名称
- figsize: 指定figure的宽和高,单位为英寸
- dpi: 指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80, 1英寸等于2.5cm, A4 纸是 21*30cm的纸张
- facecolor: 背景颜色
- edgecolor: 边框颜色
- frameon: 是否显示边框
import matplotlib.pyplot as plt def plot(fs, dpi_set): plt.figure(figsize=fs, dpi=dpi_set) plt.title("size:{}, dpi:{}".format(fs, dpi_set)) plt.plot([0, 1, 2, 3], [3, 4, 2, 5]) plt.savefig(str(fs) + "-" + str(dpi_set) + ".png") if __name__ == "__main__": figsize = (2, 2) for i in range(1, 4): plot(figsize, i*72) for i in [2, 4, 6]: plot((i, i), 72)
Jupyter
REF
https://www.cnblogs.com/lijunjie9502/p/10327151.html
问题:
1、生成的柱状图中,横轴标签相互遮盖。
2、保存的图片太小,边缘几乎被裁切掉了。
方案:
问题1:
第1种方法:旋转X轴标签, 旋转-15度
plt.xticks(rotation=-15)
第2种方法:缩小X轴字体,字体缩小为5
plt.xticks(fontsize=5)
第3种方法:长标签换行,需换行标签前加’\n’换行
x = ['American Indian/Eskimo/Aleut', '\n'+'Asian or Pacific Islander', 'Black', 'White', 'Other']
第4种方法:横纵轴颠倒。
plt.barh(df['sport_type'], df['score']) # 绘制横向柱状图
第5种方法:拉长画布。第一个是长,第二个是宽,记得要把它放在最前面来自定义画布。
plt.figure(figsize=(25,10))
问题2:
保存图片(plt.savefig()前加入一行代码就好,让Matplotlib自行调整。
plt.tight_layout()
注意:必须是plt.savefig 前加入。
REF
https://blog.csdn.net/qq_36017609/article/details/108657017
https://www.jianshu.com/p/01ed72b2aeee
matplotlib 设置图形大小时 figsize 与 dpi 的关系
matplotlib 中设置图形大小的语句如下:
fig = plt.figure(figsize=(a, b), dpi=dpi)
其中:
- figsize 设置图形的大小,a 为图形的宽, b 为图形的高,单位为英寸
- dpi 为设置图形每英寸的点数
则此时图形的像素为:
px, py = a*dpi, b*dpi # pixels
# e.g.
# 6.4 inches * 100 dpi = 640 pixels
也就是说,同一像素尺寸的图形(比如 1200 * 600)可以有任意种不同的组合,比如:
figsize=(15,7.5), dpi= 80
figsize=(12,6) , dpi=100
figsize=( 8,4) , dpi=150
figsize=( 6,3) , dpi=200
etc.
但这些不同的组合,有什么区别呢?这取决于图中元素的大小。
线条,标记,文本等大多数元素都有以磅为单位的大小。Matplotlib 中 每英寸点数(ppi)为 72,则宽度为 1 点的线将为 1/72 英寸宽,使用 fontsize 12 点的文本将是 12/72 寸高。
为了便于说明,用 matplotlib 绘制相应的图形,如 表 1 所示。
如果以英寸为单位更改图形大小,而 dpi 不变,较大的图形仍具有相同的元素大小。因此,改变图形尺寸就像拿一张不同尺寸的纸张一样,这样做当然不会改变用同一笔绘制的线条的宽度。通过表 1 中的图形 2, 4, 6 的对比,可以明显的看出来这一点。
另一方面,更改 dpi 会缩放元素。在 72 dpi 时,1 宽度的线是 1 像素。在 144 dpi 时,这条线就是 2 像素。
span > 因此,更大的 dpi 就像放大镜一样。所有元素都通过镜头的放大倍数进行缩放。 通过表 1 中的图形 1 3 5 的对比,可以看出这一点。
综上:
- 图形尺寸(figsize)确定图形的大小(以英寸为单位)。 这给出了轴(和其他元素)在图中的空间量。 较大的图形尺寸将允许显示更长的文本,更多的轴或更多的标记标签(表 1 中图形 3 与图形 4,图形 5 与图形 6 的对比可看出,像素尺寸相同时,图形尺寸越大,所能容纳的内容越多)。
- dpi 确定了图形每英寸包含的像素数,图形尺寸相同的情况下, dpi 越高,则图像的清晰度越高(表 1 中 1,3,5 对比可看出)
matplotlib中LaTeX轴标签的粗体字体粗细
在其中matplotlib
,可以使轴标签的文本为粗体
plt.xlabel('foo',fontweight='bold')
您也可以在正确的后端使用LaTeX
plt.xlabel(r'$\phi$')
但是,当您将它们合并时,数学文本不再是粗体
plt.xlabel(r'$\phi$',fontweight='bold')
以下LaTeX命令似乎也没有任何作用
plt.xlabel(r'$\bf \phi$')
plt.xlabel(r'$\mathbf{\phi}$')
如何$\phi$
在轴标签上加粗?
今天关于matplotlib 中带有标题、轴标签的确切图形大小和matplotlib坐标轴标签的介绍到此结束,谢谢您的阅读,有关matplotlib y轴标签在右侧、matplotlib 设置图形大小 figsize dpi、matplotlib 设置图形大小时 figsize 与 dpi 的关系、matplotlib中LaTeX轴标签的粗体字体粗细等更多相关知识的信息可以在本站进行查询。
本文标签: