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

Aidan075
• 阅读 1215

https://github.com/chenjiandongx/cutecharts

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

和 Matplotlib 、pyecharts 等常见的图表不同,使用这个包可以生成下面这种看起来像手绘的各种图表,在一些场景下使用效果可能会更好。一个没法商用,但是好玩有趣的 Python 手绘图形库!

GitHub 地址:

https://github.com/chenjiandongx/cutecharts

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

pip install cutecharts  

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

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

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

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

Commons

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

__init__

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

render

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

render_notebook

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

load_javascript

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

Bar(柱状图)

cutecharts.charts.Bar

API

cutecharts.charts.Bar.set_options

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

cutecharts.charts.Bar.add_series

Params                                          Desc  
------                                          ----  
name: str                                       series 名称  
data: Iterable                                  series 数据列表  

Demo

Bar-基本示例

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


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()

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

Bar-调整颜色

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

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

Line(折线图)

cutecharts.charts.Line

API

cutecharts.charts.Line.set_options

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

cutecharts.charts.Line.add_series

Params                                          Desc  
------                                          ----  
name: str                                       series 名称  
data: Iterable                                  series 数据列表  

Demo

Line-基本示例

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()

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

Line-Legend 位置

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

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

Line-调整颜色

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

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

Pie(饼图)

cutecharts.charts.Pie

API

cutecharts.charts.Pie.set_options

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

cutecharts.charts.Pie.add_series

Params                                          Desc  
------                                       ----  
data: Iterable                                  series 数据列表  

Demo

Pie-基本示例

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()

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

Pie-Legend

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

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

Pie-Radius

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

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

Radar(雷达图)

cutecharts.charts.Radar

API

cutecharts.charts.Radar.set_options

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

cutecharts.charts.Radar.add_series

Params                                          Desc  
------                                          ----  
name: str                                       series 名称  
data: Iterable                                  series 数据列表  

Demo

Radar-基本示例

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()

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

Radar-颜色调整

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  

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

Scatter(散点图)

cutecharts.charts.Scatter

API

cutecharts.charts.Scatter.set_options

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

cutecharts.charts.Scatter.add_series

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

Demo

Scatter-基本示例

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()

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

Scatter-散点大小

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

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

Scatter-散点连成线

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

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

往期推荐

[

程序员用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条《三十而已》热评,看看大家都说了些啥!



![](https://img-hello-world.oss-cn-beijing.aliyuncs.com/b784be397109765447151becee1283bf.gif)![](https://img-hello-world.oss-cn-beijing.aliyuncs.com/1969734acb9b599a1c416069d5b54a28.gif)









本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/5OdsRJ_EeF7C9xttW_83WA,可扫描二维码进行关注: 一个没法商用,但是好玩有趣的 Python 手绘图形库! 如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Karen110 Karen110
2年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
2年前
4cast
4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页:
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这