数据可视化工具库-pyecharts
阅读文本需要7分钟
Echarts是百度出的很有名,也很叼。 Echarts 是百度开源的一个数据可视化 JS 库。主要用于数据可视化。 pyecharts
是一个用于生成 Echarts 图表的类库。实际上就是 Echarts 与 Python 的对接。
ps:建议在jupyter-notebook
环境下运行,安装教程可以查看文末链接
安装
直接使用pip安装
pip install pyecharts
图表类型
类型 | 解释 |
---|---|
Bar | 柱状图/条形图 |
Bar3D | 3D 柱状图 |
Boxplot | 箱形图 |
EffectScatter | 有涟漪特效动画的散点图 |
Funnel | 漏斗图 |
Gauge | 仪表盘 |
Geo | 地理坐标系 |
Graph | 关系图 |
HeatMap | 热力图 |
Kline | K线图 |
Line | 折线/面积图 |
Line3D | 3D 折线图 |
Liquid | 水球图 |
Map | 地图 |
Parallel | 平行坐标系 |
Pie | 饼图 |
Polar | 极坐标系 |
Radar | 雷达图 |
Sankey | 桑基图 |
Scatter | 散点图 |
Scatter3D | 3D 散点图 |
ThemeRiver | 主题河流图 |
WordCloud | 词云图 |
常用方法
方法 | 解释 |
---|---|
add() | 添加图表数据和设置配置项 |
show_config() | 打印输出图表配置项 |
render() | 默认将会在根目录下生成一个 render.html 的文件,支持 path 参数,设置文件保存位置,如 render(r”e:\my_first_chart.html”),文件用浏览器打开 |
通用配置
属性 | 说明 |
---|---|
xyAxis | 直角坐标系中的 x、y 轴(Line、Bar、Scatter、EffectScatter、Kline) |
dataZoom | dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot) |
legend | 图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。 |
label | 图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。 |
lineStyle | 带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel) |
grid3D | 3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D) |
axis3D | 3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D) |
visualMap | 是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道) |
markLine&markPoint | 图形标记组件,用于标记指定的特殊数据,又标记线和标记点两种。(Bar、Line、Kline) |
tooltip | 提示框组件,用于移动或点击鼠标时弹出数据内容 |
通用配置项均在 add()
中设置,这里介绍一些常用的属性配置,有兴趣可以翻一下文档:http://pyecharts.org/#/zh-cn/charts
xyAxis:
is_convert -> bool
是否交换 x 轴与 y 轴is_xaxis_inverse -> bool
是否反向 x 坐标轴,默认为 Falseis_xaxis_show -> bool
是否显示 x 轴xaxis_name -> str
x 轴名称dataZoom:
is_datazoom_show -> bool
是否使用区域缩放组件,默认为 Falsedatazoom_type -> str
区域缩放组件类型,默认为'slider',有'slider', 'inside', 'both'可选legend:
is_legend_show -> bool
是否显示顶端图例,默认为 Truelabel:
is_label_show -> bool
是否正常显示标签,默认不显示。标签即各点的数据项信息is_random -> bool
是否随机排列颜色列表,默认为 FalselineStyle:
line_width -> int
线的宽度,默认为 1line_opacity -> float
线的透明度,0 为完全透明,1 为完全不透明。默认为 1line_curve -> float
线的弯曲程度,0 为完全不弯曲,1 为最弯曲。默认为 0line_type -> str
线的类型,有'solid', 'dashed', 'dotted'可选。默认为'solid'markLine&markPoint
mark_line_valuedim -> list
标记线指定在哪个维度上指定最大值最小值。这可以是维度的直接名称,Line 时可以是 x、angle 等、Kline 图时可以是 open、close、highest、lowest。
可同时制定多个维度,如:
mark_line=['min', 'max'], mark_line_valuedim=['lowest', 'highest'] 则表示 min 使用 lowest 维度,max 使用 highest 维度,以此类推toolbox
is_toolbox_show -> bool
指定是否显示右侧实用工具箱,默认为 True。is_more_utils -> bool
指定是否提供更多的实用工具按钮。默认只提供『数据视图』和『下载』按钮
栗子
例1.xyAxis:
1from pyecharts import Bar
2bar = Bar("手机品牌数量", "来自:Coder日常")
3bar.add("band", ["Apple", "小米", "三星","华为","锤子","vivo","OPPO","魅族"], [ 20, 36, 18,10,15,19,60,50],is_convert=True,is_xaxis_show=True,xaxis_name='我是x轴')
4bar.show_config()
5bar.render()
xy轴转换之后难看了许多,但是为了效果,难看就难看点
(数据纯属虚构)
例2.dataZoom
1bar = Bar("手机品牌数量", "来自:Coder日常")
2bar.add("band", ["Apple", "小米", "三星","华为","锤子","vivo","OPPO","魅族"], [ 20, 36, 18,10,15,19,60,50],is_datazoom_show=True,datazoom_type='inside')
3bar
这里使用了dataZoom的inside
类型,可以随着鼠标滚轮的滑动而改变,蛮好玩的。不会录制gif,这里放图没有意思,就不放了。
例3. label
1from pyecharts import Pie
2attr = ["Apple", "小米", "三星","华为","锤子","vivo","OPPO","魅族"]
3v1 = [ 20, 36, 18,10,15,19,60,50]
4pie = Pie("手机品牌占比", title_pos='center')
5pie.add("", attr, v1, radius=[40, 75], label_text_color=None,
6 is_label_show=True, legend_orient='vertical',
7 legend_pos='left',is_random=True)
8pie.use_theme("dark")#使用主题
9pie
使用了dark和颜色随机之后,有点炫酷(chou),有没有这种feel?
例4. lineStyle
1from pyecharts import Line
2line = Line("手机品牌数量", "来自:Coder日常")
3line.add("band", ["Apple", "小米", "三星","华为","锤子","vivo","OPPO","魅族"], [ 20, 36, 18,10,15,19,60,50],line_opacity=1,line_type='dotted')
4line.add("clothes", ["衬衫", "西裤", "袜子","羊毛衫","高跟鞋","雪纺衫","毛衣","针织衫"], [ 40,18, 36,12,19,35,68,55],line_width=2,line_curve=1,line_type='dashed')
5line
效果看下图:
例5. markLine&markPoint
1from pyecharts import Bar
2bar = Bar("手机品牌数量", "来自:Coder日常")
3bar.add("band", ["Apple", "小米", "三星","华为","锤子","vivo","OPPO","魅族"], [ 20, 36, 18,10,15,19,60,50],mark_line=['min', 'max'],is_toolbox_show = True,is_more_utils=True)
4bar
效果如图:
(快看我的右侧)
可以看到,这个图与上面的图多了标注线,还有右侧提供了更多的工具
炫酷图表
介绍几种不算常用,但是贼炫酷的图
1.仪表图
1from pyecharts import Gauge
2
3gauge = Gauge("仪表盘示例")
4gauge.add("业务指标", "完成率", 66.66)
5gauge
如图:
2.水球图
1from pyecharts import Liquid
2
3liquid = Liquid("水球图示例")
4liquid.add("Liquid", [0.6])
5liquid
如图:
3.词云图
pyecharts支持词云图,并且很好的支持中文,之前也提过。这里隆重介绍一下WordCould,作为压轴
WordCloud.add() 方法签名
1add(name, attr, value,
2 shape="circle",
3 word_gap=20,
4 word_size_range=None,
5 rotate_step=45)
说明:
name -> str
图例名称attr -> list
属性名称value -> list
属性所对应的值shape -> list
词云图轮廓,有'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'可选word_gap -> int
单词间隔,默认为 20。word_size_range -> list
单词字体大小范围,默认为 [12, 60]。rotate_step -> int
旋转单词角度,默认为 45
1from pyecharts import WordCloud
2
3name = [
4 'Echarts', '图表制作', '炫酷', '牛逼', 'Python',
5 '编程', '简单', '方便', '快捷', 'Home', 'Johnny Depp'
6]
7value = [965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265]
8wordcloud = WordCloud(width=1300, height=620)
9wordcloud.add("", name, value, word_size_range=[30, 100],shape='diamond')
10wordcloud
ps: 当且仅当 shape 为默认的'circle'时 rotate_step 参数才生效
(熊厂良心出品)
最后
pyecharts就分享到这里,整理的不是很好,见谅哈。。。
另外,今天想分享pyecharts的时候,翻了一遍官方文档,学到了很多之前没有注意到的知识,感觉看文档比看博客之类的好多了,建议都去翻一下文档O(∩_∩)O
这里再放上一次官方文档地址,免得又得翻回前面:http://pyecharts.org/#/zh-cn/charts
后话:排版真的不容易呀。。。请多多点赞支持,你们的鼓励,就是我坚持下去的动力
点赞,让我看到你的鼓励