pyecharts是我们用来做数据可视化,且非常实用的Python的第三方库。
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
版本 0.5 已经不再维护,而新版本 V1 是不向下兼容的。
代码风格完全不同,在 V1 版本中,一切皆Options。配置项种类更多,可操作性更强,可以画出更加丰富的图表。
因此,我们完全可以将新版本当作一个新库来学习使用。
一个非常经典的?,绘制条形图
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.render()
导入包的方式也发生了变化,各种图表类型集成在 charts 中。同时 V1 也支持链式调用如下,
from pyecharts.charts import Bar
from pyecharts import options as opts
bar = (
Bar()
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)
bar.render()
通过使用options配置项,可以修改各种配置项参数,还可以使用渲染成图片文件。
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
make_snapshot(snapshot, bar.render(), "bar.png")
另外,需要特别强调的一点是「数据格式」的问题。pyecharts 本质上在做的事情就是将 Echarts 的配置项由 Python dict 序列化为 JSON 格式,所以 pyecharts 支持什么格式的数据类型取决于 JSON 支持什么数据类型。
简单来说,我们需要自己将绘制成图像的数据的格式转换成Python原生的数据格式。我们可以利用Series.tolist()来转换,或者利用列表生成式来转换。
# for int
[int(x) for x in your_numpy_array_or_something_else]
# for str
[str(x) for x in your_numpy_array_or_something_else]
经典图表示例
折线图Demo
利用了 Faker 生成假的数据
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Line
c=(
Line()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
)
c.render()
雷达图Demo
from pyecharts import options as opts
from pyecharts.charts import Page, Radar
v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]
def radar_base() -> Radar:
c = (
Radar()
.add_schema(
schema=[
opts.RadarIndicatorItem(name="销售", max_=6500),
opts.RadarIndicatorItem(name="管理", max_=16000),
opts.RadarIndicatorItem(name="信息技术", max_=30000),
opts.RadarIndicatorItem(name="客服", max_=38000),
opts.RadarIndicatorItem(name="研发", max_=52000),
opts.RadarIndicatorItem(name="市场", max_=25000),
]
)
.add("预算分配", v1)
.add("实际开销", v2)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="Radar-基本示例"))
)
return c
c=radar_base()
c.render()
词云Demo
from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
words = [
("Sam S Club", 10000),
("Macys", 6181),
("Amy Schumer", 4386),
("Jurassic World", 4055),
("Charter Communications", 2467),
("Chick Fil A", 2244),
("Planet Fitness", 1868),
("Pitch Perfect", 1484),
("Express", 1112),
("Home", 865),
("Johnny Depp", 847),
("Lena Dunham", 582),
]
def wordcloud_base() -> WordCloud:
c = (
WordCloud()
.add("", words, word_size_range=[20, 100])
.set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-基本示例"))
)
return c
c=wordcloud_base()
c.render()
酷炫图表示例
百度地图Demo
结合百度地图,绘制杭州热门步行路线
桑基图Demo
桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小。
地理坐标线Demo
可以绘制出路线图,并动态展示
文章素材来自于pyecharts官方文档,更多精彩内容可以点击 「阅读原文」