Python-Matplotlib 可视化(8),毕业工作 5 年被裁
body {
background: white url(background.jpg);
}
</style>
</head>
<body>
<img src='sinc.png' width='800 height='600'></img>
</body>
</html>
通过系列文章的学习,我们知道可以通过在绘图函数中(如plt.plot
、plt.scatter
、pltpie
等)使用可选参数alpha
控制 Matplotlib 生成的不同透明度级别的图形。如果 alpha 等于 1,则图形将完全不透明,这是默认设置;如果 alpha 等于 0,图形将完全不可见。
import numpy as np
import matplotlib.pyplot as plt
name_list = ('Omar', 'Serguey', 'Max', 'Zhou', 'Abidin')
value_list = np.random.randint(99, size=len(name_list))
pos_list = np.arange(len(name_list))
plt.bar(pos_list, value_list, alpha = .75, color = 'c', align = 'center')
plt.xticks(pos_list, name_list)
plt.savefig('bar.png', transparent = True)
在 HTML 页面中进行显示:
<html>
<head>
<style>
body {
background: white url(background.jpg);
}
</style>
</head>
<body>
<img src='bar.png' width='800 height='600'></img>
</body>
</html>
[](
)控制输出分辨率
默认情况下,使用位图图片的输出时,Matplotlib 自动调节输出的大小和分辨率。根据位图图片的用途,我们也可以自己选择分辨率。例如,如果图片是一张大海报的一部分,可能需要高分辨率,如果想生成缩略图,那么需要较低分辨率。
plt.savefig()
函数提供可选参数dpi
控制输出分辨率:
import numpy as np
import matplotlib.pyplot as plt
name_list = ('Omar', 'Serguey', 'Max', 'Zhou', 'Abidin')
value_list = np.random.randint(99, size=len(name_list))
pos_list = np.arange(len(name_list))
plt.bar(pos_list, value_list, alpha = .25, color = 'c', align = 'center')
plt.xticks(pos_list, name_list)
plt.savefig('bar_1.png', dpi = 300)
Tips:savefig()函数的可选参数dpi控制以DPI(每英寸点数)表示的图片分辨率。默认情况下,Matplotlib将输出8 x 6空间单位的图形,即4/3的纵横比。在matplotlib中,1个空间单位等于100像素。因此,默认情况下,Matplotlib提供800 x 600像素的图片文件。如果我们使用dpi=300,图片大小为8*300 x 6*300,即2400 x 1800像素。
我们已经学习了如何控制图形的纵横比,如果将纵横比和 DPI 结合起来,就可以完全控制图片的总体比例。例如,在 512 x 512 像素的图片中显示六边形。
import numpy as np
import matplotlib.pyplot as plt
theta = np.linspace(0, 2 * np.pi, 8)
points = np.vstack((np.cos(theta), np.sin(theta))).transpose()
plt.figure(figsize=(4., 4.))
plt.gca().add_patch(plt.Polygon(points, color = 'c'))
plt.grid(True)
plt.axis('scaled')
plt.savefig('polygon.png', dpi = 128)
上例中在 4 x 4 单位面积上显示图形,并以 128 dpi 的分辨率输出,输出将为 512 x 512 像素。我们还可以在 8 x 8 单位面积显示 512 像素,但是要将分辨率变为 64 dpi:
import numpy as np
import matplotlib.pyplot as plt
theta = np.linspace(0, 2 * np.pi, 8)
points = np.vstack((np.cos(theta), np.sin(theta))).transpose()
plt.figure(figsize=(8., 8.))
plt.gca().add_patch(plt.Polygon(points, color = 'c'))
plt.grid(True)
plt.axis('scaled')
plt.savefig('polygon_1.png', dpi = 64)
Tips:图中注释更小,网格线更细,这是由于注释和线条的粗细都有自己的默认值,它们以空间单位表示。因此,将输出分辨率除以2将使注释变小两倍。
[](
)生成 PDF 或 SVG 文档
位图图片将图片表示为一个给定比例的像素数组。放大后,将看到一些众所周知的瑕疵(锯齿、像素块、模糊等)。而矢量图像具有尺度不变性,无论以何种比例观察它们,都不会导致细节丢失。因此有时,我们需要矢量图片,Matplotlib 可以输出 PDF、SVG 等矢量图片。
import numpy as np
from matplotlib import pyplot as plt
x = np.linspace(-10, 10, 1024)
y = np.sinc(x)
plt.plot(x, y)
plt.savefig('sinc.pdf')
Tips:调用plt.savefig()时,其中通过传递文件名来指定文件是PNG、PDF还是SVG,Matplotlib将通过文件名的扩展名来推断文件类型。
在某些情况下,我们可能不希望显式的声明文件的扩展名,我们可以通过 plt.savefig
的可选参数format
来达到目标,例如通过设置 format='svg'
,plt.savefig
则不会从传递给函数的文件名推断输出文件类型,而是通过传递给格式的名称。
[](
)系列链接
[Python-Matplotlib 可视化(1)——一文详解常见统计图的绘制](
)
[Python-Matplotlib 可视化(2)——自定义颜色绘制精美统计图](
)
[Python-Matplotlib 可视化(3)——自定义样式绘制精美统计图](
)
[Python-Matplotlib 可视化(4)——添加注释让统计图通俗易懂](
)
[Python-Matplotlib 可视化(5)——添加自定义形状绘制复杂图形](
)
[Python-Matplotlib 可视化(6)——自定义坐标轴让统计图清晰易懂](
)
[Python-Matplotlib 可视化(7)——多方面自定义统计图绘制](
)
[Python-Matplotlib 可视化(9)——精通更多实用图形的绘制](
)
[Python-Matplotlib 可视化(10)——一文详解 3D 统计图的绘制](
)
最后
?? 硬核资料:关注即可领取 PPT 模板、简历模板、行业经典书籍 PDF。
?? 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
?? 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
?? 知识体系:含编程语言、算法、大数据生
态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
评论