python内置库绘制33角形_pyecharts

本文详细介绍了Python库pyecharts的使用,包括如何创建柱状图、散点图、漏斗图、仪表盘等多种图表,以及数据区域缩放组件dataZoom、图例组件legend和标签(label)的配置。示例代码展示了如何添加数据、设置样式和动画效果,并提供了自定义颜色和图形形状的方法。
摘要由CSDN通过智能技术生成

阅读指南

通用配置项

xyAxis:直角坐标系中的 x、y 轴(Line、Bar、Scatter、EffectScatter、Kline)

dataZoom:dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline)

legend:图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。

label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。

lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel)

图表详细

Bar(柱状图/条形图)

EffectScatter(带有涟漪特效动画的散点图)

Funnel(漏斗图)

Gauge(仪表盘)

Geo(地理坐标系)

Graph(关系图)

HeatMap(热力图)

Kline(K线图)

Line(折线/面积图)

Liquid(水球图)

Map(地图)

Parallel(平行坐标系)

Pie(饼图)

Polar(极坐标系)

Radar(雷达图)

Scatter(散点图)

WordCloud(词云图)

项目概况

pyecharts 是一个用于生成 Echarts 图表的类库。实际上就是 Echarts 与 Python 的对接。

Echarts 是百度开源的一个数据可视化 JS 库。看了官方的介绍文档,觉得很不错,就想看看有没有人实现了 Python 库可以直接调用的。Github 上找到了一个 echarts-python 不过这个项目已经很久没更新且也没什么介绍文档。借鉴了该项目,就自己动手实现一个,于是就有了 pyecharts。API 接口是从另外一个图表库 pygal 中模仿的。

如何安装

pyecharts 兼容 Python2 和 Python3。当前版本为 0.1.6,关于版本信息请查看 changelog.md

pip install pyecharts

开始使用

首先开始来绘制你的第一个图表

from pyecharts import Bar

bar = Bar("我的第一个图表", "这里是副标题")

bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90])

bar.show_config()

bar.render()

Tip: 可以按右边的下载按钮将图片下载到本地

add()

主要方法,用于添加图表的数据和设置各种配置项

show_config()

打印输出图表的所有配置项

render()

默认将会在根目录下生成一个 render.html 的文件,支持 path 参数,设置文件保存位置,如 render(r"e:\my_first_chart.html"),文件用浏览器打开。

默认的编码类型为 UTF-8,在 Python3 中是没什么问题的,Python3 对中文的支持好很多。但是在 Python2 中,编码的处理是个很头疼的问题,暂时没能找到完美的解决方法,目前只能通过文本编辑器自己进行二次编码,我用的是 Visual Studio Code,先通过 Gbk 编码重新打开,然后再用 UTF-8 重新保存,这样用浏览器打开的话就不会出现中文乱码问题了。

基本上所有的图表类型都是这样绘制的:

chart_name = Type() 初始化具体类型图表。

add() 添加数据及配置项。

render() 生成 .html 文件。

add() 数据一般为两个列表(长度一致),如果你的数据是字典或者是带元组的字典。可利用 cast() 方法转换。

@staticmethod

cast(seq)

``` 转换数据序列,将带字典和元组类型的序列转换为 k_lst,v_lst 两个列表 ```

元组列表

[(A1, B1), (A2, B2), (A3, B3), (A4, B4)] --> k_lst[ A[i1, i2...] ], v_lst[ B[i1, i2...] ]

字典列表

[{A1: B1}, {A2: B2}, {A3: B3}, {A4: B4}] --> k_lst[ A[i1, i2...] ], v_lst[ B[i1, i2...] ]

字典

{A1: B1, A2: B2, A3: B3, A4: B4} -- > k_lst[ A[i1, i2...] ], v_lst[ B[i1, i2...] ]

图表类初始化所接受的参数(所有类型的图表都一样)。

title -> str

主标题文本,支持 \n 换行,默认为 ""

subtitle -> str

副标题文本,支持 \n 换行,默认为 ""

width -> int

画布宽度,默认为 800(px)

height -> int

画布高度,默认为 400(px)

title_pos -> str

标题位置,默认为 auto,有'auto', 'left', 'right', 'center'可选

title_color -> str

主标题文本颜色,默认为 '#000'

subtitle_color -> str

副标题文本颜色,默认为 '#aaa'

title_text_size -> int

主标题文本字体大小,默认为 18

subtitle_text_size -> int

副标题文本字体大小,默认为 12

background_color -> str

画布背景颜色,默认为 '#fff'

通用配置项

通用配置项均在 add() 中设置

xyAxis:直角坐标系中的 x、y 轴(Line、Bar、Scatter、EffectScatter、Kline)

is_convert -> bool

是否交换 x 轴与 y 轴

xy_text_size -> int

x 轴和 y 轴字体大小

namegap -> int

坐标轴名称与轴线之间的距离

x_axis -> list

x 轴数据项

xaxis_name -> str

x 轴名称

xaxis_name_pos -> str

x 轴名称位置,有'start','middle','end'可选

y_axis -> list

y 坐标轴数据

yaxis_formatter -> str

y 轴标签格式器,如 '天',则 y 轴的标签为数据加'天'(3 天,4 天),默认为 ""

yaxis_name -> str

y 轴名称

yaxis_name_pos -> str

y 轴名称位置,有'start', 'middle','end'可选

interval -> int

坐标轴刻度标签的显示间隔,在类目轴中有效。默认会采用标签不重叠的策略间隔显示标签

设置成 0 强制显示所有标签

设置为 1,表示『隔一个标签显示一个标签』,如果值为 2,表示隔两个标签显示一个标签,以此推

dataZoom:dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline)

is_datazoom_show -> bool

是否使用区域缩放组件,默认为 False

datazoom_type -> str

区域缩放组件类型,默认为'slider',有'slider', 'inside'可选

datazoom_range -> list

区域缩放的范围,默认为[50, 100]

legend:图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。

is_legend_show -> bool

是否显示顶端图例,默认为 True

legend_orient -> str

图例列表的布局朝向,默认为'horizontal',有'horizontal', 'vertical'可选

legend_pos -> str

图例组件离容器左侧的距离,默认为'center',有'left', 'center', 'right'可选

legend_top -> str

图例组件离容器上侧的距离,默认为'top',有'top', 'center', 'bottom'可选

label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。

is_label_show -> bool

是否正常显示标签,默认不显示。标签即各点的数据项信息

is_emphasis -> bool

是否高亮显示标签,默认显示。高亮标签即选中数据时显示的信息项。

label_pos -> str

标签的位置,Bar 图默认为'top'。有'top', 'left', 'right', 'bottom', 'inside','outside'可选

label_text_color -> str

标签字体颜色,默认为 "#000"

label_text_size -> int

标签字体大小,默认为 12

is_random -> bool

是否随机排列颜色列表,默认为 False

label_color -> list

自定义标签颜色。全局颜色列表,所有图表的图例颜色均在这里修改。如 Bar 的柱状颜色,Line 的线条颜色等等。

formatter -> list

标签内容格式器,有'series', 'name', 'value', 'percent'可选。如 ["name", "value"]

series:图例名称

name:数据项名称

value:数据项值

percent:数据的百分比(主要用于饼图)

Tip: is_random 可随机打乱图例颜色列表,算是切换风格?

lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel)

line_width -> int

线的宽度,默认为 1

line_opacity -> float

线的透明度,0 为完全透明,1 为完全不透明。默认为 1

line_curve -> float

线的弯曲程度,0 为完全不弯曲,1 为最弯曲。默认为 0

line_type -> str

线的类型,有'solid', 'dashed', 'dotted'可选。默认为'solid'

图表详细

Bar(柱状图/条形图)

柱状/条形图,通过柱形的高度/条形的宽度来表现数据的大小。

Bar.add() 方法签名

add(name, x_axis, y_axis, is_stack=False, **kwargs)

name -> str

图例名称

x_axis -> list

x 坐标轴数据

y_axis -> list

y 坐标轴数据

is_stack -> bool

数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置

from pyecharts import Bar

attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]

v1 = [5, 20, 36, 10, 75, 90]

v2 = [10, 25, 8, 60, 20, 80]

bar = Bar("柱状图数据堆叠示例")

bar.add("商家A", attr, v1, is_stack=True)

bar.add("商家B", attr, v2, is_stack=True)

bar.render()

Tip: 全局配置项要在最后一个 add() 上设置,否侧设置会被冲刷掉。

from pyecharts import Bar

bar = Bar("标记线和标记点示例")

bar.add("商家A", attr, v1, mark_point=["average"])

bar.add("商家B", attr, v2, mark_line=["min", "max"])

bar.render()

mark_point -> list

标记点,有'min', 'max', 'average'可选

mark_line -> list

标记线,有'min', 'max', 'average'可选

mark_point_symbol -> str

标记点图形,,默认为'pin',有'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'可选

mark_point_symbolsize -> int

标记点图形大小,默认为 50

mark_point_textcolor -> str

标记点字体颜色,默认为'#fff'

from pyecharts import Bar

bar = Bar("x 轴和 y 轴交换")

bar.add("商家A", attr, v1)

bar.add("商家B", attr, v2, is_convert=True)

bar.render()

dataZoom 效果,'slider' 类型

import random

attr = ["{}天".format(i) for i in range(30)]

v1 = [random.randint(1, 30) for _ in range(30)]

bar = Bar("Bar - datazoom - slider 示例")

bar.add("", attr, v1, is_label_show=True, is_datazoom_show=True)

bar.show_config()

bar.render()

'inside' 类型

attr = ["{}天".format(i) for i in range(30)]

v1 = [random.randint(1, 30) for _ in range(30)]

bar = Bar("Bar - datazoom - inside 示例")

bar.add("", attr, v1, is_datazoom_show=True, datazoom_type='inside', datazoom_range=[10, 25])

bar.show_config()

bar.render()

Tip: datazoom 适合所有平面直角坐标系图形,也就是(Line、Bar、Scatter、EffectScatter、Kline)

Tip: 可以通过 label_color 来设置柱状的颜色,如 ['#eee', '#000'],所有的图表类型的图例颜色都可通过 label_color 来修改。

EffectScatter(带有涟漪特效动画的散点图)

利用动画特效可以将某些想要突出的数据进行视觉突出。

EffectScatter.add() 方法签名

add(name, x_value, y_value, symbol_size=10, **kwargs)

name -> str

图例名称

x_axis -> list

x 坐标轴数据

y_axis -> list

y 坐标轴数据

symbol_size -> int

标记图形大小,默认为 10

from pyecharts import EffectScatter

v1 = [10, 20, 30, 40, 50, 60]

v2 = [25, 20, 15, 10, 60, 33]

es = EffectScatter("动态散点图示例")

es.add("effectScatter", v1, v2)

es.render()

es = EffectScatter("动态散点图各种图形示例")

es.add("", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin")

es.add("", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4,symbol="rect")

es.add("", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5,symbol="roundRect")

es.add("", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill',symbol="diamond")

es.add("", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3,symbol="arrow")

es.add("", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3,symbol="triangle")

es.render()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值