好玩有趣的手绘图形库——cutecharts
本文作者:陈 鼎,中南财经政法大学统计与数学学院
本文编辑:尚晨曦
技术总编:陈 鼎
Stata&Python云端课程来啦!
好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》、《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!
导 读
今天给大家介绍一个风格酷炫的Python手绘风格可视化库:
cutecharts
。与 Matplotlib
、seaborn
等常用库不同,使用这个包可以生成类似于手绘画风的各种图表,十分可爱。首先,附上GitHub源码地址:
1https://github.com/chenjiandongx/cutecharts
要使用该可视化包,在命令提示符中输入以下代码即可:
1pip install cutecharts
二绘 图cutecharts
目前可以绘制柱状图、折线图、饼状图与环形图、雷达图、散点图等多种图形,其项目结构与 pyecharts
基本保持一致,拥有 pyecharts
的所有核心功能,但整体更加小巧,代码更加精简。cutecharts
源码采用继承,会把共性的代码抽取并存放到父类当中。下面是一些共同的参数:
__init__ | ||
---|---|---|
参数 | 输入 | 描述 |
title | Optional[str] = None | 图表标题 |
width | str = "800px" | 图表宽度 |
height | str = "600px" | 图表高度 |
assets_host | Optional[str] = None | 引用资源 Host |
render | ||
---|---|---|
参数 | 输入 | 描述 |
dest | str = "render.html" | 图表存放文件路径 |
template_name | str = "basic_local.html" | 渲染模板,一般不需要修改 |
柱状图
cutecharts.charts.Bar.set_options | ||
---|---|---|
参数 | 输入 | 描述 |
labels | Iterable | X 坐标轴标签数据 |
x_label | str | X 坐标轴名称 |
y_label | str | Y 坐标轴名称 |
y_tick_count | int | Y 轴刻度分割段数 |
colors | Iterable | label的颜色数 |
cutecharts.charts.Bar.add_series | ||
---|---|---|
参数 | 输入 | 描述 |
name | str | 数据名称 |
data | Iterable | 数据列表 |
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文件根目录下找到对应生成的图表。移动光标,可以看到不同动物对应的颜色与数据大小:折线图
cutecharts.charts.Line.set_options | ||
---|---|---|
参数 | 输入 | 描述 |
labels | Iterable | X 坐标轴标签数据 |
x_label | str | X 坐标轴名称 |
y_label | str | Y 坐标轴名称 |
y_tick_count | int | Y 轴刻度分割段数 |
legend_pos | str | 图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选 |
colors | Iterable | label 颜色数组 |
cutecharts.charts.Line.add_series | ||
---|---|---|
参数 | 输入 | 描述 |
name | str | 数据名称 |
data | Iterable | 数据列表 |
下面是绘图案例:
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 | ||
---|---|---|
参数 | 输入 | 描述 |
labels | Iterable | 数据标签的列表 |
inner_radius | float | 饼图半径 |
legend_pos | str | 图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选 |
colors | Iterable | 颜色类别数组 |
cutecharts.charts.Pie.add_series | ||
---|---|---|
参数 | 输入 | 描述 |
data | Iterable | 数据列表 |
下面是一个官方的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 | ||
---|---|---|
参数 | 输入 | 描述 |
labels | Iterable | 数据标签列表 |
is_show_label | bool | 是否显示标签 |
is_show_legend | bool | 是否显示图例 |
tick_count | int | 坐标系分割刻度 |
legend_pos | str | 图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选 |
colors | Iterable | label 颜色数组 |
cutecharts.charts.Radar.add_series | ||
---|---|---|
参数 | 输入 | 描述 |
name | str | 名称 |
data | iterable | 数据列表 |
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_label | str | X 坐标轴名称 |
y_label | str | Y 坐标轴名称 |
x_tick_count | int | X 轴刻度分割段数 |
y_tick_count | int | Y 轴刻度分割段数 |
is_show_line | bool | 是否将散点连成线 |
dot_size | int | 散点大小 |
time_format | str | 日期格式 |
legend_pos | str | 图例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可选 |
colors | iterable | label 颜色数组 |
cutecharts.charts.Scatter.add_series | ||
---|---|---|
参数 | 输入 | 描述 |
name | str | 名称 |
data | Iterable | 数据列表 |
下面是官方的散点图绘制案例:
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()
欢迎大家点赞、评论、转发呦~
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
爬虫实战|摩尔庄园微博话题讨论
一季度财报出炉,哪些公司最赚钱?
技能篇 | 图片合并大法
批量空气质量数据文件合并分析
Stata17之日期时间新功能
Stata17之Lasso新功能
爱奇艺视频弹幕爬取之《小舍得》 数据可视化利器——Matplotlib从第七次人口普查看中国人口变化|Stata与Python交互绘图
200万投资者关注!!哪家公司这么牛?
带你领略一天天气之变化
利用pyecharts看微博粉丝地区分布
零值太多怎么办?解锁Stata17新命令ziologit
Stata17新功能之Python API 小罗肥归升级啦|解锁Stata17之新命令xtmlogit 初识PyStata
辞旧迎新——Stata17之Do-file编辑器优化
Stata17新亮点——解放表格输出生产力
【爬虫+可视化】链家网北京租房信息
手把手教你如何获取股票数据和可视化
Countvalues——数数的超级小帮手
下拉选择框如何变成“小猫咪” | selenium小技巧
Python中的运算符知多少?
快来get缺失值的正确打开方式
frame框架——我到底在哪个“房间”关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。