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 像素。因此,更大的dpi就像放大镜一样。所有元素都通过镜头的放大倍数进行缩放。 通过表 1 中的图形 1 3 5 的对比,可以看出这一点。

综上:

  • 图形尺寸(figsize)确定图形的大小(以英寸为单位)。 这给出了轴(和其他元素)在图中的空间量。 较大的图形尺寸将允许显示更长的文本,更多的轴或更多的标记标签(表1中图形3与图形4,图形5与图形6的对比可看出,像素尺寸相同时,图形尺寸越大,所能容纳的内容越多)。
  • dpi 确定了图形每英寸包含的像素数,图形尺寸相同的情况下, dpi 越高,则图像的清晰度越高(表1中 1,3,5 对比可看出)
表1 

 

 

 

 

 5

 

6

易混乱的点

由表 1 中的 1,3,5 对比可看出,明明是相同尺寸的图片,可显示出来大小却差异极大,是不是说明 figsize 的设置根本没用?

这主要是因为图形在屏幕中的显示是以像表为基准的,像素点越高,尺寸看起来也就越大。表 1 中的 1,3,5,其 尺寸相同, dpi 越大,则像素也就越大,因此图形整个看起来也就越大。

为了验证这个问题,可以将上述 6 个图形插入到 word 中,如下图所示。从图中可看出,figsize 相同的图形,其大小相同,只不过 dpi 越高,图像越清晰。也就是说 figsize 的设置可以在打印或者排版时发挥作用。

最后,附上画图的相关代码供参考:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2019/1/27 14:47
# @Author  : 木子识时务
# @Site    :
# @File    : 图形尺寸设置
# @Software: PyCharm

import matplotlib.pyplot as plt

def plot(fs, dpi_set):
    plt.figure(figsize=fs, dpi=dpi_set)
    plt.title("size:{}, dpi:{}".format(fs, dpi))
    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)

画图程序

原文地址:https://www.cnblogs.com/lijunjie9502/p/10327151.html

时间: 2024-10-09 06:40:26

matplotlib 设置图形大小时 figsize 与 dpi 的关系的相关文章

表格内,设置许多元素的大小时,js的速度慢的办法

因为要做可编辑的表格,生成的表格结构如下: <td class=" autoEdit" data-field="sex">      <input class="autoEditinput" value="1" data-url="1111"  data-field="sex"> </td> 我要的最终效果是:(粉色的是input) 但input与表格

使用setStyleSheet设置图形界面的外观

使用setStyleSheet来设置图形界面的外观 使用setStyleSheet来设置图形界面的外观:QT Style Sheets是一个很有利的工具,允许定制窗口的外观,此外还可以用子类QStyle来完成,他的语法很大比重来源于html的CSS,但是适用于窗口 概括:Style Sheets是文字性的设定,对于整个应用程序可以使用QApplication::setStyleSheet() 或者对应一个窗口可以使用QWidget::setStyleSheet(),如果好几个样式表在不同的层次上

InnoDB log file 设置多大合适?

简介: 数据库的东西,往往一个参数就牵涉N多知识点.所以简单的说一下.大家都知道innodb是支持事务的存储引擎.事务的四个特性ACID即原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability).其中原子性,一致性,持久性通过redo log 和 undo来实现.redo log称为重做日志,用来保证事务的原子性和持久性.undo log用来保证事务的一致性. 当事务提交时,必须先将该事务的所有日志写入到重做日志文件(redo

PyQt通过resize改变窗体大小时ListWidget显示异常

前几天开始的pygame音乐播放器Doco,做的差不多了,上午做到了歌词显示和搜索页面.遇到bug,即通过resize改变ui大小时ListWidget显示异常 #目的: 增加一部分窗口用来显示歌词和搜索页面.也就是在原来播放器的基础上通过resize增加窗口宽度,然后增加相应的内容. #test 由于Doco代码过于臃肿,笔者来一个test来描述上午遇到的问题吧. 首先,欲改变ui宽度,则想到resize Test.resize(852, 714) #设置高和宽 Test.setFixedSi

十分钟快速学会Matplotlib基本图形操作

在学习Python的各种工具包的时候,看网上的各种教程总是感觉各种方法很多很杂,参数的种类和个数也十分的多,理解起来需要花费不少的时间. 所以我在这里通过几个例子,对方法和每个参数都进行详细的解释,这样对于0基础的人也可以快速的掌握Matplotlib基本图形操作. 首先导入numpy和matplotlib包 import numpy as np import matplotlib.pyplot as plt %matplotlib inline # 使图形可以直接在notebook上显示 首先

Allegro设置十字大光标

使用大十字光标,在摆放元器件时,容易对齐.在allegro中,可以通过设置实现大十字光标,其具体方法如下: 1.选择Setup->User Perferences,即可出现如下图所示界面: 2.选择Display->Cursor,里面有个pcb_cursor可选菜单.若是选择cross,则是小十字光标,若是选择infinite,则是出现大光标. 记得要把“infinite_cursor_bug_nt” 勾选 原创文章,转载请注明: 转载自 http://www.mr-wu.cn/ 吴川斌的博客

ORA-00064 processes设置过大导致数据库打不开

processes设置过大导致数据库打不开 在processes设置过大后,可能导致数据库打不开,开启数据库后会报错: SQL> startup ORA-00064: object is too large to allocate on this O/S (1,7746920) SQL> 解决办法: 首先找到pfile位置,然后从pfile启动数据库; startup pfile=$ORACLE_BASE/admin/SID/pfile/init.ora.49201715235' pfile一

【翻译自mos文章】/dev/shm应该设置多大Oracle 实例启动时才能不报ORA-00845

/dev/shm应该设置多大Oracle 实例启动时才能不报ORA-00845 来源于:ORA-00845 - Which value for /dev/shm is needed to startup database without ORA-00845 (文档 ID 1399209.1) 适用于: Oracle Database - Standard Edition - Version 11.1.0.6 and later Information in this document appli

如何使用MathType数学公式编辑器设置图形标注

在制作图形标注时,人们往往采用文本框加文字的方式,但文本框的边框样式及内部边距都要设一遍,操作起来比较繁琐,往往都是几个文本框叠加在一起,很难将他们分辨出来,使用MathType数学公式编辑器可以轻松解决这个问题.本文将详解如何使用MathType数学公式编辑器设置图形标注. 使用MathType数学公式编辑器设置图形标注的操作步骤: 步骤一 首先在word文档中画一个图形,点击插入->形状.如图所示: 步骤二 把图形设为文字“四周型”. 步骤三 启动MathType数学公式编辑器,输入标注文字