python figure size_在matplotlib中改变figure的布局和大小实例

相关:

python figure size_在matplotlib中改变figure的布局和大小实例



fig = plt.figure(figsize=(a, b), dpi=dpi)


dpi是什么,其实大家都容易理解,不论是打游戏还是用鼠标调dpi,这都是我们日常使用电脑锁常用的概念,不过如果给出一个概念解释的话,那么可以说DPI就是图形每英寸的点数。


其实在正常使用matplotlib绘图时我们一般是使用不到这个dpi参数的,因为我们一般都是在绘图时使用默认的图形大小,如果需要进行一定的调整可能也就是在plot的时候指定线段的粗细号码就是了,不过实际上对matplotlib中的dpi参数有一定的了解还是有益处的。


要知道在不谈论图形的dpi的前提下谈论图形的figsize是一种流氓行为的,因为从专业的角度来说图形的figsize只能指定图形的长宽比例而无法真正的指定长宽的具体值,因为生成的图形都是可以进行伸缩变换的。就比如你去照相馆拍一寸照和两寸照一样,你并不需要拍摄两次,而是只需要拍摄一次即可,因为在打印照片时我们只需要指定打印的尺寸即可,也就是说拍摄时的figsize并不会决定最终图片的figsize,而图片的最终figsize是可以通过我们随时手动指定的。


Matplotlib 有一个默认的图形尺寸,通常为 6.4 x 4.8 英寸。


matplotlib 默认的dpi是100,这意味着绘图将以100 dpi的分辨率进行。


也就是说我们使用matplotlib绘图的默认的像素点个数为:

6.4 x 100 x 4.8 x 100 = 307200


就如同上面说过的那样,设置图形的figsize并不难真正的指定最终图形的长宽,而是指定了长宽比例,因为最终在我们呈现图片时是会需要进行缩放操作的。


在我们进行绘制图形时,设置好matplotlib的figsize,也就是上面提到的(6.4, 4.8),此时我们可以通过设置dpi来改变绘制时的像素多少,而这个dpi的设置在固定尺寸的情况下最终的体现的就是绘图的线条的粗细不同。


给出DPI=50时的绘图:

image


给出DPI=75时的绘图:

image


给出DPI=100时的绘图:

image


给出DPI=125时的绘图:

image


给出DPI=150时的绘图:

image



可以看到,如果dpi设置的过低的话,那么在我最终呈现图片时可能会出现发虚的问题;但是,如果我们把保持生成图片时的figsize不变而逐渐改变dpi大小时其所生成的图片其实并不受设置的figsize的限制,而是会按照你所设置的dpi与默认dpi的比例来同等比例的缩放或伸缩最终的呈现的图片的figsize;而我们逐渐增加dpi的大小,那么随之而来的就是生成的图片的figsize被自动的逐渐增大,而之所以会出现这种情况是因为在屏幕上最终呈现图片时是在电脑屏幕的每一个像素点的位置只能呈现一个像素,因此虽然生成图片时我们设置了figsize,但是由于dpi的增加而导致图片的像素增加,从而出现在最终电脑屏幕呈现图片时会由于图片的像素增加而导致图片的尺寸增加。


也就是说在生成图片时所生成的图片的质量和长宽并不是由figsize和dpi二者中的单一个所决定的,而是由二者联合决定的。如果我们将dpi设置过高,然后再将其插入到一个dpi较低的地方,那么实际上就会自动的在进行图片的压缩操作,来自动的减低图片的像素大小。



需要注意的是,不论是设置figsize还是设置dpi其实都是改变图形绘制的像素,而不能改变图形的具体形态,比如我们希望图形中的某个线段更粗一些,那么我们是无法通过设置dpi和figsize来实现的,我们只能通过设置线段的具体长宽数值来实现。

设置图形的figsize和dpi并不能改变图形的具体形态,无法改变图形中的具体线条的粗细,但是我们在使用matplotlib进行绘图时往往发现可以通过设置更高的figsize或dpi来实现图形的线段的增粗功能,其实这是一种视觉的错觉,因为通过设置figsize(长宽同比例增加)或dpi只能增加图形的像素个数,但是这样做却会避免图形显示中出现的过虚的问题,因为在某些情况下由于图形的像素过低从而会导致图形在具体呈现时出现线段发虚的问题,那其实并不是线条粗细的问题,因为线条的粗细是像素的相同长度线段下的像素个数问题(固定线条的长宽),这其实是一种密度问题,而线条的加粗其实是设置图形的长宽问题;所以,增加figsize或dpi可以通过提高图形的像素点以实现更好的清晰度,从而实现避免图形发虚的问题,但是这并不是真的增加了线条的粗细,只不过是一种“视觉错觉”。



posted on 2025-02-03 10:05  Angry_Panda  阅读(264)  评论(0)    收藏  举报

导航