一个没法商用,但是好玩有趣的 Python 手绘图形库!

https://github.com/chenjiandongx/cutecharts

今天,给大家介绍一个很酷的 Python 手绘风格可视化神包:cutecharts**。**

和 Matplotlib 、pyecharts 等常见的图表不同,使用这个包可以生成下面这种看起来像手绘的各种图表,在一些场景下使用效果可能会更好。

GitHub 地址:

https://github.com/chenjiandongx/cutecharts

怎么画出这些图表呢,很简单,一行命令先安装好该库:

1pip install cutecharts 2

也可以使用源码安装的方式:

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

下面就介绍下每个图表如何绘制。

首先是一些图表共通的参数:

Commons

不同图表有着部分相同的方法。

__init__

1Params                                          Desc 2------                                          ---- 3title: Optional[str] = None                     图表标题 4width: str = "800px"                            图表宽度 5height: str = "600px"                           图表高度 6assets_host: Optional[str] = None               引用资源 Host 7

render

1Params                                          Desc 2------                                          ---- 3dest: str = "render.html"                       渲染的文件路径 4template_name: str = "basic_local.html"         渲染使用的模板,一般不需要修改

render_notebook

1Params                                          Desc 2------                                          ---- 3template_type: str = "basic"                    渲染使用的模板类型,一般不需要修改

load_javascript

1加载 JS 依赖,在 JupyterLab 渲染时使用。 2

Bar(柱状图)

cutecharts.charts.Bar

API

cutecharts.charts.Bar.set_options

1Params                                          Desc 2------                                          ---- 3labels: Iterable                                X 坐标轴标签数据 4x_label: str = ""                               X 坐标轴名称 5y_label: str = ""                               Y 坐标轴名称 6y_tick_count: int = 3                           Y 轴刻度分割段数 7colors: Optional[Iterable] = None               label 颜色数组 8font_family: Optional[str] = None               CSS font-family 9

cutecharts.charts.Bar.add_series

1Params                                          Desc 2------                                          ---- 3name: str                                       series 名称 4data: Iterable                                  series 数据列表 5

Demo

Bar-基本示例

1from cutecharts.charts import Bar 2from cutecharts.components import Page 3from cutecharts.faker import Faker 4 5 6def bar_base() -> Bar: 7    chart = Bar("Bar-基本示例") 8    chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel") 9    chart.add_series("series-A", Faker.values()) 10    return chart 11 12bar_base().render()

Bar-调整颜色

1def bar_tickcount_colors(): 2    chart = Bar("Bar-调整颜色") 3    chart.set_options(labels=Faker.choose(), y_tick_count=10, colors=Faker.colors) 4    chart.add_series("series-A", Faker.values()) 5    return chart

Line(折线图)

cutecharts.charts.Line

API

cutecharts.charts.Line.set_options

1Params                                          Desc 2------                                          ---- 3labels: Iterable                                X 坐标轴标签数据 4x_label: str = ""                               X 坐标轴名称 5y_label: str = ""                               Y 坐标轴名称 6y_tick_count: int = 3                           Y 轴刻度分割段数 7legend_pos: str = "upLeft"                      图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选 8colors: Optional[Iterable] = None               label 颜色数组 9font_family: Optional[str] = None               CSS font-family 10

cutecharts.charts.Line.add_series

1Params                                          Desc 2------                                          ---- 3name: str                                       series 名称 4data: Iterable                                  series 数据列表 5

Demo

Line-基本示例

1from cutecharts.charts import Line 2from cutecharts.components import Page 3from cutecharts.faker import Faker 4 5 6def line_base() -> Line: 7    chart = Line("Line-基本示例") 8    chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel") 9    chart.add_series("series-A", Faker.values()) 10    chart.add_series("series-B", Faker.values()) 11    return chart 12line_base().render()

Line-Legend 位置

1def line_legend(): 2    chart = Line("Line-Legend 位置") 3    chart.set_options(labels=Faker.choose(), legend_pos="upRight") 4    chart.add_series("series-A", Faker.values()) 5    chart.add_series("series-B", Faker.values()) 6    return chart

Line-调整颜色

1def line_tickcount_colors(): 2    chart = Line("Line-调整颜色") 3    chart.set_options(labels=Faker.choose(), colors=Faker.colors, y_tick_count=8) 4    chart.add_series("series-A", Faker.values()) 5    chart.add_series("series-B", Faker.values()) 6    return chart

Pie(饼图)

cutecharts.charts.Pie

API

cutecharts.charts.Pie.set_options

1Params                                          Desc 2------                                          ---- 3labels: Iterable                                数据标签列表 4inner_radius: float = 0.5                       Pie 图半径 5legend_pos: str = "upLeft"                      图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选 6colors: Optional[Iterable] = None               label 颜色数组 7font_family: Optional[str] = None               CSS font-family 8

cutecharts.charts.Pie.add_series

1Params                                          Desc 2------                                       ---- 3data: Iterable                                  series 数据列表 4

Demo

Pie-基本示例

1from cutecharts.charts import Pie 2from cutecharts.components import Page 3from cutecharts.faker import Faker 4 5 6def pie_base() -> Pie: 7    chart = Pie("Pie-基本示例") 8    chart.set_options(labels=Faker.choose()) 9    chart.add_series(Faker.values()) 10    return chart 11 12 13pie_base().render()

Pie-Legend

1def pie_legend_font(): 2    chart = Pie("Pie-Legend") 3    chart.set_options( 4        labels=Faker.choose(), 5        legend_pos="downLeft", 6        font_family='"Times New Roman",Georgia,Serif;', 7    ) 8    chart.add_series(Faker.values()) 9    return chart

Pie-Radius

1def pie_radius(): 2    chart = Pie("Pie-Radius") 3    chart.set_options( 4        labels=Faker.choose(), 5        inner_radius=0, 6    ) 7    chart.add_series(Faker.values()) 8    return chart

Radar(雷达图)

cutecharts.charts.Radar

API

cutecharts.charts.Radar.set_options

1Params                                          Desc 2------                                          ---- 3labels: Iterable                                数据标签列表 4is_show_label: bool = True                      是否显示标签 5is_show_legend: bool = True                     是否显示图例 6tick_count: int = 3                             坐标系分割刻度 7legend_pos: str = "upLeft"                      图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选 8colors: Optional[Iterable] = None               label 颜色数组 9font_family: Optional[str] = None               CSS font-family 10

cutecharts.charts.Radar.add_series

1Params                                          Desc 2------                                          ---- 3name: str                                       series 名称 4data: Iterable                                  series 数据列表 5

Demo

Radar-基本示例

1from cutecharts.charts import Radar 2from cutecharts.components import Page 3from cutecharts.faker import Faker 4 5 6def radar_base() -> Radar: 7    chart = Radar("Radar-基本示例") 8    chart.set_options(labels=Faker.choose()) 9    chart.add_series("series-A", Faker.values()) 10    chart.add_series("series-B", Faker.values()) 11    return chart 12 13 14radar_base().render()

Radar-颜色调整

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

Scatter(散点图)

cutecharts.charts.Scatter

API

cutecharts.charts.Scatter.set_options

1Params                                          Desc 2------                                          ---- 3x_label: str = ""                               X 坐标轴名称 4y_label: str = ""                               Y 坐标轴名称 5x_tick_count: int = 3                           X 轴刻度分割段数 6y_tick_count: int = 3                           Y 轴刻度分割段数 7is_show_line: bool = False                      是否将散点连成线 8dot_size: int = 1                               散点大小 9time_format: Optional[str] = None               日期格式 10legend_pos: str = "upLeft"                      图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选 11colors: Optional[Iterable] = None               label 颜色数组 12font_family: Optional[str] = None               CSS font-family 13

cutecharts.charts.Scatter.add_series

1Params                                          Desc 2------                                          ---- 3name: str                                       series 名称 4data: Iterable                                  series 数据列表,[(x1, y1), (x2, y2)] 5

Demo

Scatter-基本示例

1from cutecharts.charts import Scatter 2from cutecharts.components import Page 3from cutecharts.faker import Faker 4 5 6def scatter_base() -> Scatter: 7    chart = Scatter("Scatter-基本示例") 8    chart.set_options(x_label="I'm xlabel", y_label="I'm ylabel") 9    chart.add_series( 10        "series-A", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())] 11    ) 12    chart.add_series( 13        "series-B", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())] 14    ) 15    return chart 16 17 18scatter_base().render()

Scatter-散点大小

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

Scatter-散点连成线

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

往期推荐

[

程序员用python给了女友一个七夕惊喜!

](http://mp.weixin.qq.com/s?__biz=MzU5Nzg5ODQ3NQ==&mid=2247494487&idx=1&sn=6ec93a4eadffd599f6e513cde8086158&chksm=fe4eced3c93947c55796d211ea3e712ca8abab830d7bcdf28f9d511e9cf95ba03ca6a8ccd0d1&scene=21#wechat_redirect)

[

一条SQL引发的“血案”:

](http://mp.weixin.qq.com/s?__biz=MzU5Nzg5ODQ3NQ==&mid=2247494487&idx=2&sn=cfed2832388131af32900268b3bc24ca&chksm=fe4eced3c93947c5d111413c7556cc30d56c01e355453886c10d3b8dd399ee5de1caaedfe97f&scene=21#wechat_redirect)

[

10个可以快速用Python进行数据分析的小技巧

](http://mp.weixin.qq.com/s?__biz=MzU5Nzg5ODQ3NQ==&mid=2247494365&idx=2&sn=07efe6ac095acabeaebd9de4e0b8558b&chksm=fe4ecf59c939464f8a68fa6ad20e151bf4a424ef6975b39de90b9d9cd6c8e0d526b3955c9ef4&scene=21#wechat_redirect)

Python爬取10529条《三十而已》热评,看看大家都说了些啥!

1 2 3![](https://img-hello-world.oss-cn-beijing.aliyuncs.com/b784be397109765447151becee1283bf.gif)![](https://img-hello-world.oss-cn-beijing.aliyuncs.com/1969734acb9b599a1c416069d5b54a28.gif) 4 5 6 7 8 9 10 11 12 13

本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/5OdsRJ_EeF7C9xttW_83WA,可扫描二维码进行关注: 如有侵权,请联系删除。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

​一篇文章总结一下Python库中关于时间的常见操作

前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''