查看原文
其他

好玩有趣的手绘图形库——cutecharts

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:陈   鼎,中南财经政法大学统计与数学学院

本文编辑:尚晨曦

技术总编:陈   鼎

Stata&Python云端课程来啦!

好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!



导 读
今天给大家介绍一个风格酷炫的Python手绘风格可视化库:cutecharts。与 Matplotlibseaborn等常用库不同,使用这个包可以生成类似于手绘画风的各种图表,十分可爱。
安 装

首先,附上GitHub源码地址:

1https://github.com/chenjiandongx/cutecharts

要使用该可视化包,在命令提示符中输入以下代码即可:

1pip install cutecharts

绘 图

cutecharts目前可以绘制柱状图、折线图、饼状图与环形图、雷达图、散点图等多种图形,其项目结构与 pyecharts 基本保持一致,拥有 pyecharts 的所有核心功能,但整体更加小巧,代码更加精简。cutecharts源码采用继承,会把共性的代码抽取并存放到父类当中。下面是一些共同的参数:

__init__

参数输入描述
titleOptional[str] = None图表标题
widthstr = "800px"图表宽度
heightstr = "600px"图表高度
assets_hostOptional[str] = None引用资源 Host
render

参数输入描述
deststr = "render.html"图表存放文件路径
template_namestr = "basic_local.html"渲染模板,一般不需要修改
  • 柱状图

绘制柱状图所需的API为cutecharts.charts.Bar。其主要方法与参数如下所示:
cutecharts.charts.Bar.set_options

参数输入描述
labelsIterableX 坐标轴标签数据
x_labelstrX 坐标轴名称
y_labelstrY 坐标轴名称
y_tick_countintY 轴刻度分割段数
colorsIterablelabel的颜色数
cutecharts.charts.Bar.add_series

参数输入描述
namestr数据名称
dataIterable数据列表
下面是一个简单的绘图示例:
1from cutecharts.charts import Bar
2from cutecharts.components import Page
3from cutecharts.faker import Faker
4
5def bar_base() -> Bar:
6    chart = Bar("Bar-基本示例")
7    chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel")
8    chart.add_series("series-A", Faker.values())
9    return chart
10
11bar_base().render()
运行上述代码,在python文件根目录下找到对应生成的图表。移动光标,可以看到不同动物对应的颜色与数据大小:

  • 折线图

绘制折线图所需的API为cutecharts.charts.Line。其主要方法与参数如下所示:
cutecharts.charts.Line.set_options

参数输入描述
labelsIterableX 坐标轴标签数据
x_labelstrX 坐标轴名称
y_labelstrY 坐标轴名称
y_tick_countintY 轴刻度分割段数
legend_posstr图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选
colorsIterablelabel 颜色数组
cutecharts.charts.Line.add_series

参数输入描述
namestr数据名称
dataIterable数据列表

下面是绘图案例:

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

  • 饼图&环形图

绘制饼图所需的API为cutecharts.charts.Pie。其主要方法与参数如下所示:

cutecharts.charts.Pie.set_options

参数输入描述
labelsIterable数据标签的列表
inner_radiusfloat饼图半径
legend_posstr图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选
colorsIterable颜色类别数组
cutecharts.charts.Pie.add_series

参数输入描述
dataIterable数据列表

下面是一个官方的demo:

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

如果要改成饼图,也只需要简单更改一下参数: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

  • 雷达图

绘制饼图所需的API为cutecharts.charts.Radar。其主要方法与参数如下所示:

cutecharts.charts.Radar.set_options

参数输入描述
labelsIterable数据标签列表
is_show_labelbool是否显示标签
is_show_legendbool是否显示图例
tick_countint坐标系分割刻度
legend_posstr图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选
colorsIterablelabel 颜色数组
cutecharts.charts.Radar.add_series

参数输入描述
namestr名称
dataiterable数据列表
下面是简单的案例:
1from cutecharts.charts import Radar
2from cutecharts.components import Page
3from cutecharts.faker import Faker
4def radar_base() -> Radar:
5    chart = Radar("Radar-基本示例")
6    chart.set_options(labels=Faker.choose())
7    chart.add_series("series-A", Faker.values())
8    chart.add_series("series-B", Faker.values())
9    return chart
10radar_base().render()

  • 散点图

绘制散点图的API为cutecharts.charts.Scatter。其主要方法与参数如下所示:

cutecharts.charts.Scatter.set_options

参数输入描述
x_labelstrX 坐标轴名称
y_labelstrY 坐标轴名称
x_tick_countintX 轴刻度分割段数
y_tick_countintY 轴刻度分割段数
is_show_linebool是否将散点连成线
dot_sizeint散点大小
time_formatstr日期格式
legend_posstr图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选
colorsiterablelabel 颜色数组
cutecharts.charts.Scatter.add_series

参数输入描述
namestr名称
dataIterable数据列表

下面是官方的散点图绘制案例:

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

今天的分享就到这里了,希望大家有所收获哦~最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。


欢迎大家点赞、评论、转发呦~


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐 

  爬虫实战|摩尔庄园微博话题讨论

  一季度财报出炉,哪些公司最赚钱?

  技能篇 | 图片合并大法

  批量空气质量数据文件合并分析

  Stata17之日期时间新功能

  Stata17之Lasso新功能

        爱奇艺视频弹幕爬取之《小舍得》         数据可视化利器——Matplotlib

  从第七次人口普查看中国人口变化|Stata与Python交互绘图

  200万投资者关注!!哪家公司这么牛?

  
带你领略一天天气之变化

  利用pyecharts看微博粉丝地区分布

  零值太多怎么办?解锁Stata17新命令ziologit

  Stata17新功能之Python API  小罗肥归升级啦|解锁Stata17之新命令xtmlogit  
速度大比拼之Stata17有多快?

初识PyStata

辞旧迎新——Stata17之Do-file编辑器优化

Stata17新亮点——解放表格输出生产力

 【爬虫+可视化】链家网北京租房信息

  手把手教你如何获取股票数据和可视化

  Countvalues——数数的超级小帮手

          frame框架进阶篇

  下拉选择框如何变成“小猫咪” | selenium小技巧

  Python中的运算符知多少?

  快来get缺失值的正确打开方式

  frame框架——我到底在哪个“房间”

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存