Python实现手绘风格数据可视化:Matplotlib、Cutecharts与Roughviz实战指南

咖啡半糖
咖啡半糖
发布时间:2026-10-16 | 4人浏览过
原创

本文汇总了Python中实现手绘风格数据可视化的三种主流方法。首先介绍利用Matplotlib的xkcd()上下文管理器快速生成手绘效果;其次详解Cutecharts库,该库基于pyecharts简化开发,支持条形图、折线图及饼图的手绘渲染;最后探讨Roughviz库,展示其通过roughViz.js实现的基础图表绘制。通过具体代码样例与参数设置,帮助开发者轻松创建具有艺术感的可视化作品。

前言

大家好,今天为大家带来绘制“手绘风格”可视化作品的实用技巧,主要聚焦于Python编码实现。文章将涵盖以下核心内容:

Python-matplotlib 手绘风格图表绘制

Python-cutecharts 手绘风格图表绘制

Python-py-roughviz 手绘风格图表绘制

Python-matplotlib 手绘风格图表绘制

在Python可视化领域,Matplotlib无疑是首选工具。若要绘制“手绘风格”图表,Matplotlib提供了便捷的解决方案,即通过matplotlib.pyplot.xkcd()函数即可实现。下文将通过具体案例进行演示:

样例一:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

with plt.xkcd():
    fig, ax = plt.subplots(figsize=(6.5,4),dpi=100)
    ax = df.plot.bar(color=["#BC3C28","#0972B5"],ec="black",rot=15,ax=ax)
    ax.set_ylim((0, 100))
    ax.legend(frameon=False)
    ax.set_title("EXAMPLE01 OF MATPLOTLIB.XKCD()",pad=20)
    ax.text(.8,-.22,'Visualization by DataCharm',transform = ax.transAxes,
            ha='center', va='center',fontsize = 10,color='black')

Example01 of matplotlib.xkcd()

样例二:

df = pd.DataFrame({
    'x': [1, 2, 2.5, 3, 3.5, 4, 5],
    'y': [4, 4, 4.5, 5, 5.5, 6, 6],
})

with plt.xkcd():
    fig, ax = plt.subplots(figsize=(6.5,4),dpi=100)
    ax = df.plot.kde(color=["#BC3C28","#0972B5"],ax=ax)
    ax.set_ylim((0, 0.4))
    ax.legend(frameon=False)
    ax.set_title("EXAMPLE02 OF MATPLOTLIB.XKCD()",pad=20)
    ax.text(.8,-.22,'Visualization by DataCharm',transform = ax.transAxes,
            ha='center', va='center',fontsize = 10,color='black')

Example02 of matplotlib.xkcd()

样例三:

with plt.xkcd():
    fig, ax = plt.subplots(figsize=(6.5,4),dpi=100)
    ax.spines["right"].set_color('none')
    ax.spines["top"].set_color('none')
    ax.set_xticks([])
    ax.set_yticks([])
    ax.set_ylim([-30, 10])
    data = np.ones(100)
    data[70:] -= np.arange(30)
    ax.annotate(
        'THE DAY I REALIZED\nI COULD COOK BACON\nWHENEVER I WANTED',
        xy=(70, 1), arrowprops=dict(arrowstyle='->'), xytext=(15, -10))

    ax.plot(data,color="#BC3C28")

    ax.set_xlabel('time')
    ax.set_ylabel('my overall health')
    ax.set_title("EXAMPLE03 OF MATPLOTLIB.XKCD()")
    ax.text(.8,-.15,'Visualization by DataCharm',transform = ax.transAxes,
            ha='center', va='center',fontsize = 10,color='black')

Example03 of matplotlib.xkcd()

Python-cutecharts 手绘风格图表绘制

介绍完Matplotlib的用法后,接下来推荐一个专门用于绘制“手绘风格”图表的Python可视化库——Cutecharts。熟悉pyecharts的用户会发现该库上手极快。官方仓库地址为:https://github.com/cutecharts/cutecharts.py 。此处直接列举几个示例,感兴趣的同学可进一步探索:

样例一:

from cutecharts.charts import Bar
from cutecharts.components import Page
from cutecharts.faker import Faker


def bar_base() -> Bar:
    chart = Bar("Bar-cutecharts基本示例01")
    chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel")
    chart.add_series("series-A", Faker.values())
    return chart

bar_base().render_notebook()

注:render_notebook()方法可使绘图结果在Jupyter Notebook中直接显示。

样例二:

from cutecharts.charts import Line
from cutecharts.components import Page
from cutecharts.faker import Faker


def line_base() -> Line:
    chart = Line("Line-cutecharts基本示例02")
    chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel")
    chart.add_series("series-A", Faker.values())
    chart.add_series("series-B", Faker.values())
    return chart
line_base().render_notebook()

Example02 of cutecharts

样例三:

from cutecharts.charts import Pie
from cutecharts.components import Page
from cutecharts.faker import Faker


def pie_base() -> Pie:
    chart = Pie("Pie-cutecharts基本示例03")
    chart.set_options(labels=Faker.choose(),legend_pos="upRight")
    chart.add_series(Faker.values())
    return chart

pie_base().render_notebook()

Example03 of cutecharts

以上仅展示了基础图表绘制,定制化属性参数未作详细介绍。由于官方文档尚不完善,建议参考样例代码及pyecharts相关文档进行深入研究。

Python-py-roughviz 手绘风格图表绘制

与Cutecharts类似,该库也是基于roughViz.js进行转换编码绘制,官网地址为:https://github.com/charlesdong1991/py-roughviz 。鉴于其支持的图表类型有限且部分参数设置不够完善,此处直接提供两个样例,感兴趣者可自行探索:

样例一:

from roughviz.charts.bar import Bar
data = {
    "labels": ["North", "South", "East", "West"],
    "values": [10, 5, 8, 3]
}

bar = Bar(data=data, title="Bar-roughviz基本示例01", title_fontsize=3)
bar.set_options(xlabel="Region", ylabel="Number", color="orange")
bar.show()

Example01 of roughviz

样例二:

from roughviz.charts.donut import Donut
donut = Donut(data={"labels": ['a', 'b'], "values": [10, 20]}, title="Donut-roughviz基本示例02", title_fontsize=3)
donut.show()

Example02 of roughviz

总结

至此,关于Python“手绘风格”数据可视化方法的介绍便告一段落。如需了解更多相关Python手绘风格数据可视化内容,欢迎搜索本站历史文章或继续浏览后续内容。感谢大家的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表