实现漫画可视化 Python

我们都知道,普通人对视觉信息的反应比单独的文本反应要好得多。通常情况下,Matplotlib 生成的图表非常完美,但很无聊。观察这些图表并不是很有趣。

在本教程中,我们将努力使传统图像变得更加有趣和幽默,以 XKCD 为例。

网络漫画xkcd由美国作家Randall Munroe于2005年创立。xkcd是每周更新的网络漫画。它是最受欢迎的漫画书之一。我们将在这里尝试以xkcd漫画的风格来绘制我们的情节!


加载库和数据

我们将首先导入必要的库,然后继续将数据导入到程序中。在这里,我们加载 Tips 数据集并输出其最初的五行。

1
2
3
4
5
6
7
8
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from seaborn import load_dataset
 
tips = load_dataset("tips")
tips.head()
提示数据集

示例 1 – 条形图

条形图是数据的图形表示形式,其中可以使用特定形式(例如矩形)突出显示类别。条形图中条形的长度和高度显示数据集中数据的分布。

另请阅读:Python 条形图 – 在 Python 中可视化分类数据

使用 sns.countplot 函数绘制列中唯一值的计数,我们可以生成基本的条形图。

1
2
3
4
plt.figure(facecolor="W",figsize=(10,5))
plt.title("Bar Plot - Normal")
sns.countplot(tips['sex'])
plt.show()
正态条形图

为了使情节变得漫画化,我们需要在整个代码之前添加 plt.xkcd 方法。

条形图漫画

示例 2:箱线图

箱线图是数据集数据分布的度量。它将数据集分成四分位数。该图描绘了数据集的最小值、最大值、中值、第一四分位数和第三四分位数。

另请阅读:箱线图:您需要了解的一切

使用下面的代码,我们可以使用 sns.boxplot 函数生成箱线图。

plt.figure(facecolor="W",figsize=(10,5))
plt.title("BoxPlot - Normal")
sns.boxplot(x = "day", y = "total_bill", hue = "sex", data = tips);
plt.show()
正态箱线图

为了制作漫画情节,我们需要在整个代码之前添加 plt.xkcd 方法。

1
2
3
4
5
plt.xkcd()
plt.figure(facecolor="W",figsize=(10,5))
plt.title("BoxPlot - Comic")
sns.boxplot(x = "day", y = "total_bill", hue = "sex", data = tips);
plt.show()
箱线图漫画

示例 3 – 正弦波

在此示例中,我们将利用 linspace 和 sin 函数生成正弦波图的值,如下面的代码所示。

 
1
2
3
4
plt.figure(facecolor="W",figsize=(10,5))
plt.plot(np.sin(np.linspace(0, 10)))
plt.title('A simple Sine Wave - Normal')
plt.show()
正弦波正常

为了制作漫画情节,我们需要在整个代码之前添加 plt.xkcd 方法。

1
2
3
4
5
plt.xkcd()
plt.figure(facecolor="W",figsize=(10,5))
plt.plot(np.sin(np.linspace(0, 10)))
plt.title('A simple Sine Wave - Comic')
plt.show()
正弦波漫画

示例 4 – 饼图

Matplotlib 的 pie() 函数支持饼图。plt.pie() 方法可用于生成绘图。以下代码生成饼图:

1
2
3
4
5
6
7
8
9
labels = 'Python', 'C++', 'Ruby', 'Java'
sizes = [215, 130, 245, 210]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0)
plt.figure(facecolor="W",figsize=(10,5))
plt.pie(sizes, explode=explode, labels=labels, colors=colors,autopct='%1.1f%%')
plt.axis('equal')
plt.title("Pie Chart - Normal")
plt.show()
正常饼图

为了使情节变得漫画化,我们需要在整个代码之前添加 plt.xkcd 方法。

1
2
3
4
5
6
7
8
9
10
labels = 'Python', 'C++', 'Ruby', 'Java'
sizes = [215, 130, 245, 210]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0)
plt.xkcd()
plt.figure(facecolor="W",figsize=(10,5))
plt.pie(sizes, explode=explode, labels=labels, colors=colors,autopct='%1.1f%%')
plt.axis('equal')
plt.title("Pie Chart - Comic")
plt.show()
饼图漫画

结论

我希望您在 xkcd 的帮助下喜欢本教程,从无聊的标准可视化到有趣的漫画可视化。我还向您推荐以下教程:

  1. 使用 Python Bokeh 进行数据可视化
  2. 在 Python 中对数据进行动画处理 – 简单指南
  3. Python 编程语言中的 ASCII 艺术

感谢您的阅读!快乐学习!😃