pyecharts是我们用来做数据可视化,且非常实用的Python的第三方库。
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
版本 0.5 已经不再维护,而新版本 V1 是不向下兼容的。
代码风格完全不同,在 V1 版本中,一切皆Options。配置项种类更多,可操作性更强,可以画出更加丰富的图表。
因此,我们完全可以将新版本当作一个新库来学习使用。
一个非常经典的?,绘制条形图
from pyecharts.charts import Barbar = Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])bar.render()
导入包的方式也发生了变化,各种图表类型集成在 charts 中。同时 V1 也支持链式调用如下,
from pyecharts.charts import Barfrom pyecharts import options as optsbar = ( 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_snapshotfrom snapshot_selenium import snapshotmake_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 optsfrom pyecharts.faker import Fakerfrom pyecharts.charts import Linec=( 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 optsfrom pyecharts.charts import Page, Radarv1 = [[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 optsfrom pyecharts.charts import Page, WordCloudfrom pyecharts.globals import SymbolTypewords = [ ("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 cc=wordcloud_base()c.render()
酷炫图表示例
百度地图Demo
结合百度地图,绘制杭州热门步行路线
桑基图Demo
桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小。
地理坐标线Demo
可以绘制出路线图,并动态展示
文章素材来自于pyecharts官方文档,更多精彩内容可以点击 「阅读原文」
往期精彩
学习资料免费分享
你朋友圈发的假图被我发现了!
Python抓取海量面经,直面秋招