写点什么

Python-Matplotlib 可视化(8),毕业工作 5 年被裁

作者:程序媛可鸥
  • 2022 年 3 月 21 日
  • 本文字数:2193 字

    阅读完需:约 7 分钟

body {


background: white url(background.jpg);


}


</style>


</head>


<body>


<img src='sinc.png' width='800 height='600'></img>


</body>


</html>



通过系列文章的学习,我们知道可以通过在绘图函数中(如plt.plotplt.scatterpltpie等)使用可选参数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、前端等等。

用户头像

Python编程资料加Q群免费领取:419829237 2022.03.14 加入

还未添加个人简介

评论

发布
暂无评论
Python-Matplotlib可视化(8),毕业工作5年被裁_Python_程序媛可鸥_InfoQ写作平台