敲可爱的手绘风可视化库——cutecharts

作者:陈键冬,Python中文社区专栏作者,开源项目pyecharts核心开发者。pyecharts项目曾上榜 Github Trending in Open Source,目前star数量超过7100。

GitHub:https://github.com/chenjiandongx

项目地址:https://github.com/chenjiandongx/cutecharts

初衷

在闲逛 Github 的时候,发现了一个十分有趣的图表库 chart.xkcd,该库的图表的手绘风格很可爱。所以有了一个将 chart.xkcd 和 Python 相结合的想法,这个想法最终变成了你现在所看到的 cutecharts。

chart.xkcd 的图表类型相对 Echarts 来说少得多,只支持几种基本的图表且没有太多的配置项,想使用更丰富的图表的话 pyecharts 或许是个更好的选择。cutecharts 我个人的想法是作为一个学习如何将 Javascript 与 Python/Notebook 相结合的项目。毋庸置疑,JS 库在交互性以及动画效果上有天然的优势,若能够将其优势与 Notebook 环境结合起来的话,那将能够产生很多有趣的项目。

cutecharts 的项目结构与 pyecharts 基本保持一致,拥有 pyecharts 的所有核心功能。但是整体更加小巧,代码更加精简。如果把 cutecharts 代码读完了,再去看 pyecharts 的代码,可能就会发现,其实也就那样,根本就没什么神秘的东西。在这里也是抛砖引玉,希望 Python 社区有更多地将 JS 与 Python/Notebook 结合的优秀第三方库。cutecharts 的学习价值远大于它的使用价值。

安装

pip 安装

$ pip(3) install cutecharts

源码安装

$ git clone https://github.com/chenjiandongx/cutecharts.git
$ cd cutecharts
$ pip install -r requirements.txt
$ python setup.py install

使用

  • 图表文档:https://github.com/chenjiandongx/cutecharts/blob/master/docs/charts.md

  • 组件文档:https://github.com/chenjiandongx/cutecharts/blob/master/docs/components.md

  • 版本日志:https://github.com/chenjiandongx/cutecharts/blob/master/docs/changelog.md

本地环境

生成 HTML

from cutecharts.charts import Line
 
 
chart = Line("某商场销售情况")
chart.set_options(
    labels=["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"], 
    x_label="I'm xlabel", 
    y_label="I'm ylabel",
)
chart.add_series("series-A", [57, 134, 137, 129, 145, 60, 49])
chart.add_series("series-B", [114, 55, 27, 101, 125, 27, 105])
chart.render()

render 方法会在本地生成一个render.html 文件,使用浏览器打开。

敲可爱的手绘风可视化库——cutecharts_第1张图片

在JupyterNotebook上绘制

柱形图

from cutecharts.charts import Bar
from cutecharts.components import Page
from cutecharts.faker import Faker
%matplotlib inline

def bar_base() -> Bar:
    chart = Bar("Bar-基本示例")    
    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()

敲可爱的手绘风可视化库——cutecharts_第2张图片


折线图

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


def line_base() -> Line:
    chart = Line("Line-基本示例")
    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()

敲可爱的手绘风可视化库——cutecharts_第3张图片

饼图

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


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


pie_base().render_notebook()

敲可爱的手绘风可视化库——cutecharts_第4张图片

def pie_legend_font():
    chart = Pie("Pie-Legend")
    chart.set_options(
        labels=Faker.choose(),
        legend_pos="upRight",
        font_family='"Times New Roman",Georgia,Serif;',
    )
    chart.add_series(Faker.values())
    return chart

pie_legend_font().render_notebook()

敲可爱的手绘风可视化库——cutecharts_第5张图片

def pie_radius():
    chart = Pie("Pie-Radius")
    chart.set_options(labels=Faker.choose(), inner_radius=0)
    chart.add_series(Faker.values())
    return chart
pie_radius().render_notebook()

敲可爱的手绘风可视化库——cutecharts_第6张图片


雷达图

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


def radar_base() -> Radar:
    chart = Radar("Radar-基本示例")
    chart.set_options(labels=Faker.choose())
    chart.add_series("series-A", Faker.values())
    chart.add_series("series-B", Faker.values())
    return chart

radar_base().render_notebook()

敲可爱的手绘风可视化库——cutecharts_第7张图片

def radar_legend_colors():
    chart = Radar("Radar-颜色调整")
    chart.set_options(labels=Faker.choose(), colors=Faker.colors, legend_pos="upRight")
    chart.add_series("series-A", Faker.values())
    chart.add_series("series-B", Faker.values())
    return chart

radar_legend_colors().render_notebook()

敲可爱的手绘风可视化库——cutecharts_第8张图片

散点图

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


def scatter_base() -> Scatter:
    chart = Scatter("Scatter-基本示例")
    chart.set_options(x_label="I'm xlabel", y_label="I'm ylabel")
    chart.add_series(
        "series-A", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())]
    )
    chart.add_series(
        "series-B", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())]
    )
    return chart

scatter_base().render_notebook()

敲可爱的手绘风可视化库——cutecharts_第9张图片

def scatter_dotsize_tickcount():
    chart = Scatter("Scatter-散点大小")
    chart.set_options(dot_size=2, y_tick_count=8)
    chart.add_series(
        "series-A", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())]
    )
    chart.add_series(
        "series-B", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())]
    )
    return chart

scatter_dotsize_tickcount().render_notebook()

敲可爱的手绘风可视化库——cutecharts_第10张图片

def scatter_show_line():
    chart = Scatter("Scatter-散点连成线")
    chart.set_options(y_tick_count=8, is_show_line=True)
    chart.add_series(
        "series-A", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())]
    )
    chart.add_series(
        "series-B", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())]
    )
    return chart

scatter_show_line().render_notebook()

敲可爱的手绘风可视化库——cutecharts_第11张图片

你可能感兴趣的:(数据可视化)