在当今时代,数据的力量在于能够通过一堆数字和文本获得洞察力和清晰的叙事。数据可视化已经成为实践者中不再新鲜的事情。今天,人们总是专注于构建基于主题的图表,这些图表是自解释的,并且最好地描述了所使用的数据类型。例如,如果正在可视化特定报纸过去一年的月度销售量,会使用Times New Roman或Franklin Gothic字体,而不是默认字体,以使图表更符合正在使用的数据。此外,还会添加棕褐色背景,使图表自解释。
赛博朋克是一种以科技为背景的虚构科幻流派,类似于反乌托邦的未来。赛博朋克这个术语几乎是自解释的,其中“赛博”指的是技术。赛博朋克没有固定的含义,许多专家都引入了他们自己的定义。对来说,知道赛博朋克是一个科幻和技术驱动的环境就足够了。互联网资源的视觉表明,赛博朋克主要由明亮和霓虹色的世界组成,人工智能的参与度最高。
电影系列如《黑客帝国》三部曲和《银翼杀手》系列是赛博朋克主题电影的完美例子。因此,可以说赛博朋克不是一个新术语,它已经向世界介绍了很长一段时间了。这个术语不仅局限于电影,还被采用为视频游戏类型。臭名昭著的《赛博朋克2077》视频游戏于2020年推出,完全设置在赛博朋克环境中。
在本文中,将使用赛博朋克主题图表,这些图表也具有黑暗和明亮的环境,以及鲜艳的颜色,可以在一定程度上定制。使用赛博朋克主题图表在要绘制一些技术和人工智能驱动的图表时非常有用。
在Python中绘制赛博朋克主题图表并不需要太多努力,只需要几行代码。要使用赛博朋克风格,需要满足一些要求。除了基本的绘图库外,还需要安装mplcyberpunk库。这个库是由Dominik Haitz引入的,将成为本文的主要参考。
pip install mplcyberpunk
import matplotlib.pyplot as plt
使用这个样式表,图表布局将变为黑暗:
plt.style.use("cyberpunk")
绘制折线图:
plt.figure(figsize = (20,8))
plt.plot(np.random.randint(0, 8, 5), marker = 'o', )
plt.plot(np.random.randint(0, 8, 5), marker = 'o')
plt.plot(np.random.randint(0, 8, 5), marker = 'o')
plt.xticks(size = 16)
plt.yticks(size = 16)
显示最终图表:
plt.show()
将所有内容放在一起:
import matplotlib.pyplot as plt
import mplcyberpunk
plt.style.use('cyberpunk')
plt.figure(figsize = (20,8))
plt.plot([1,4,6,7,4,1], marker = 'o')
plt.plot([5,3,5,8,9,2], marker = 'o')
plt.plot([3,5,8,3,4,9], marker = 'o')
plt.xticks(size = 16)
plt.yticks(size = 16)
plt.show()
上述生成的图表本身就很漂亮,但可以在图表中控制某些事情。对于自定义,可以添加:线条发光效果、线条下方区域发光效果以及线条和下方区域都发光的效果。
首先,创建一个没有发光效果的简单图表,这将帮助看出差异:
import matplotlib.pyplot as plt
import mplcyberpunk
plt.style.use('cyberpunk')
plt.figure(figsize = (20,8))
plt.plot([1,4,6,7,4,1], marker = 'o')
plt.plot([5,3,5,8,9,2], marker = 'o')
plt.plot([3,5,8,3,4,9], marker = 'o')
plt.xticks(size = 16)
plt.yticks(size = 16)
plt.show()
在图表中添加线条发光效果,将使用mplcyberpunk库的.make_lines_glow()方法。
import matplotlib.pyplot as plt
import mplcyberpunk
plt.style.use('cyberpunk')
plt.figure(figsize = (20,8))
plt.plot([1,4,6,7,4,1], marker = 'o')
plt.plot([5,3,5,8,9,2], marker = 'o')
plt.plot([3,5,8,3,4,9], marker = 'o')
plt.xticks(size = 16)
plt.yticks(size = 16)
mplcyberpunk.make_lines_glow()
plt.show()
要添加线条下方区域的发光效果,将使用mplcyberpunk库的.add_underglow()方法。
import matplotlib.pyplot as plt
import mplcyberpunk
plt.style.use('cyberpunk')
plt.figure(figsize = (20,8))
plt.plot([1,4,6,7,4,1], marker = 'o')
plt.plot([5,3,5,8,9,2], marker = 'o')
plt.plot([3,5,8,3,4,9], marker = 'o')
plt.xticks(size = 16)
plt.yticks(size = 16)
mplcyberpunk.add_underglow()
plt.show()
要同时添加线条和线条下方区域的发光效果,将使用mplcyberpunk库的.add_glow_effects()方法。
import matplotlib.pyplot as plt
import mplcyberpunk
plt.style.use('cyberpunk')
plt.figure(figsize = (20,8))
plt.plot([1,4,6,7,4,1], marker = 'o')
plt.plot([5,3,5,8,9,2], marker = 'o')
plt.plot([3,5,8,3,4,9], marker = 'o')
plt.xticks(size = 16)
plt.yticks(size = 16)
mplcyberpunk.add_glow_effects()
plt.show()
在本文中,学习了如何通过添加线条和线条下方区域的发光效果来绘制赛博朋克主题的工作表。目前,可以在图表中自定义的内容并不多,但可以期待未来会有更多的自定义选项。
除了折线图,还可以尝试绘制条形图,但只能使用赛博朋克样式表,因为在线或线下添加发光效果是没有意义的。此外,可以结合几个Matplotlib方法来提高图表的可用性。如果有兴趣,可以关注mplcyberpunk以查看新版本和更新。
可以尝试绘制不同的模式,如正弦和余弦曲线(如文章开头所示),这些曲线看起来非常吸引人,值得关注。也可以尝试绘制更多不同类型的图表,看看它们的外观。尝试和实验事物总是好的,因为总是通过实践来学习。