来源: https://github.com/chenjiandongx/cutecharts
今天,给大家介绍一个很酷的 Python 手绘风格可视化神包:cutecharts。 和 Matplotlib 、pyecharts 等常见的图表不同,使用这个包可以生成下面这种看起来像手绘的各种图表,在一些场景下使用效果可能会更好。  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
APIcutecharts.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 数据列表
DemoBar-基本示例
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()
imgBar-调整颜色
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
imgLine(折线图)cutecharts.charts.Line
APIcutecharts.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 数据列表
DemoLine-基本示例
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()
imgLine-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
imgLine-调整颜色
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
imgPie(饼图)cutecharts.charts.Pie
APIcutecharts.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 数据列表
DemoPie-基本示例
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()
imgPie-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
imgPie-Radius
def pie_radius(): chart = Pie('Pie-Radius') chart.set_options( labels=Faker.choose(), inner_radius=0, ) chart.add_series(Faker.values()) return chart
imgRadar(雷达图)cutecharts.charts.Radar
APIcutecharts.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 数据列表
DemoRadar-基本示例
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()

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

Scatter(散点图)cutecharts.charts.Scatter
APIcutecharts.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)]
DemoScatter-基本示例
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()
imgScatter-散点大小
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
imgScatter-散点连成线
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
img
|