今天,给大家介绍一个很酷的 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给了女友一个七夕惊喜!
[
一条SQL引发的“血案”:
[
10个可以快速用Python进行数据分析的小技巧
Python爬取10529条《三十而已》热评,看看大家都说了些啥!
1 2 3 4 5 6 7 8 9 10 11 12 13
本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/5OdsRJ_EeF7C9xttW_83WA,可扫描二维码进行关注:
如有侵权,请联系删除。