pyecharts在数据可视化中的应用

pyecharts在数据可视化中的应用(一)
pyecharts是一款将python与echarts结合的强大的数据可视化工具,非常便捷好用,大力推荐!!

官方介绍:pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。
pyecharts的中文官网
pyecharts的中文官网:http://pyecharts.org/#/zh-cn/intro。

安装
pip安装: pip install pyecharts

源码安装:

$ git clone https://github.com/pyecharts/pyecharts.git
$ cd pyecharts
$ pip install -r requirements.txt
$ python setup.py install
# 或者执行 python install.py

也可以在pycharm软件里进行下载pyecharts库包。
下载成功后进行查询版本号

import pyecharts

print(pyecharts.__version__)

使用实例

使用之前我们要强调一点:就是python2.x和python3.x的编码问题,在python3.x中你可以把它看做默认是unicode编码,但在python2.x中并不是默认的,原因就在它的bytes对象定义的混乱,而pycharts是使用unicode编码来处理字符串和文件的,所以当你使用的是python2.x时,请务必在上方插入此代码:

from future import unicode_literals

pyecharts 所有方法均支持链式调用。
使用 options 配置项,在 pyecharts 中,一切皆 Options。
1.美国1995年-2009年邮费变化折线图、阶梯图;
数据如下:
年份 : [“1995”, “1996”, “1997”, “1998”, “1999”, “2000”,
“2001”, “2002”, “2003”, “2004”, “2005”, “2006”,
“2007”, “2008”, “2009”]
邮费: [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44]
折线图 代码如下:

import pyecharts.options as opts
from pyecharts.charts import Line

year=  ["1995", "1996", "1997", "1998", "1999", "2000",
          "2001", "2002", "2003", "2004", "2005", "2006",
          "2007", "2008", "2009"]
postage= [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44]

(
    Line()
    .set_global_opts(
        tooltip_opts=opts.TooltipOpts(is_show=False),
        xaxis_opts=opts.AxisOpts(type_="category"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
    )
    .add_xaxis(xaxis_data=year)
    .add_yaxis(
        series_name="",
        y_axis=postage,
        symbol="emptyCircle",
        is_symbol_show=True,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .render("basic_line_chart.html")
)

会在同目录下生成一个basic_line_chart.html的网页,打开网页则会显示该代码的运行结果:
在这里插入图片描述阶梯图 代码如下:

import pyecharts.options as opts
from pyecharts.charts import Line

year =  ["1995", "1996", "1997", "1998", "1999", "2000",
          "2001", "2002", "2003", "2004", "2005", "2006",
          "2007", "2008", "2009"]
postage = [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44]

c = (
    Line()
    .add_xaxis(xaxis_data=year)
    .add_yaxis("美国1995年-2009年邮费", y_axis=postage, is_step=True)
    .set_global_opts(title_opts=opts.TitleOpts(title="Line-阶梯图"))
    .render("line_step.html")
)

会在同目录下生成一个line_step.html的网页,打开网页则会显示该代码的运行结果:
在这里插入图片描述2.2000年-2010年热狗大胃王比赛前三名成绩的堆叠柱形图、极坐标系-堆叠柱状图(南丁格尔玫瑰图);
数据文件:hot-dog-places.csv
在这里插入图片描述

堆叠柱形图 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Bar
import csv

filename="hot-dog-places.csv"
data_x=[]
#打开文件循环读取数据
with open(filename) as f:
    reader = csv.reader(f)
    for data_row in reader:
        data_x.append(data_row)
x=data_x[0]			#读取数据列表集中第一行数据进行赋值
y1=data_x[1]
y2=data_x[2]
y3=data_x[3]
c = (
    Bar()
    .add_xaxis(x)
    .add_yaxis("第一名", y1, stack="stack1")
    .add_yaxis("第二名", y2, stack="stack1")
    .add_yaxis("第三名", y3, stack="stack1")  # 显示在同一条柱状图中,不带stack属性则会分为三条柱状图
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠柱形图"))
    .render("bar_stack0.html")
    )

会在同目录下生成一个bar_stack0.html的网页,打开网页则会显示该代码的运行结果:
在这里插入图片描述极坐标系-堆叠柱状图(南丁格尔玫瑰图) 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Polar
import csv

filename="hot-dog-places.csv"
data_x=[]
#打开文件循环读取数据
with open(filename) as f:
    reader = csv.reader(f)
    for data_row in reader:
        data_x.append(data_row)
x=data_x[0]			#读取数据列表集中第一行数据进行赋值
y1=data_x[1]
y2=data_x[2]
y3=data_x[3]
c = (
    Polar()
    .add_schema(angleaxis_opts=opts.AngleAxisOpts(data=x, type_="category"))
    .add("A", y1, type_="bar", stack="stack0")
    .add("B", y2, type_="bar", stack="stack0")
    .add("C", y3, type_="bar", stack="stack0")
    .set_global_opts(title_opts=opts.TitleOpts(title="极坐标系-堆叠柱状图(南丁格尔玫瑰图)"))
    .render("极坐标系-堆叠柱状图(南丁格尔玫瑰图).html")
)

会在同目录下生成一个极坐标系-堆叠柱状图(南丁格尔玫瑰图).html的网页,打开网页则会显示该代码的运行结果:
在这里插入图片描述
极坐标系-堆叠柱状图 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Polar
import csv

filename="hot-dog-places.csv"
data_x=[]
#打开文件循环读取数据
with open(filename) as f:
    reader = csv.reader(f)
    for data_row in reader:
        data_x.append(data_row)
x=data_x[0]			#读取数据列表集中第一行数据进行赋值
y1=data_x[1]
y2=data_x[2]
y3=data_x[3]
c = (
    Polar()
    .add_schema(
        radiusaxis_opts=opts.RadiusAxisOpts(data=x, type_="category"),
        angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True, max_=200),
    )
    .add("A", y1, type_="bar", stack="stack1")
    .add("B", y2, type_="bar", stack="stack1")
    .add("C", y3, type_="bar", stack="stack1")
    .set_global_opts(title_opts=opts.TitleOpts(title="极坐标系-堆叠柱状图"))
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
    .render("极坐标系-堆叠柱状图.html")
)

会在同目录下生成一个极坐标系-堆叠柱状图.html的网页,打开网页则会显示该代码的运行结果:
在这里插入图片描述
3.某网站用户感兴趣的领域的投票结果绘制饼图Pie、环形图;
数据文件:vote_result.csv
在这里插入图片描述
饼图 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Pie
import csv

filename="vote_result.csv"
data_x=[]
#打开文件循环读取数据
with open(filename,'r', encoding='UTF-8') as f:
    reader = csv.reader(f)
    for data_row in reader:
        data_x.append(data_row)
b=[]
c=[]
for index,values in enumerate(data_x):
    if(index>0):
        b.append(values[0])
        c.append(values[1])

x=data_x[0]			#读取数据列表集中第一行数据进行赋值
d = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(b, c)],
        center=["35%", "50%"],
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="投票结果饼图"),
        legend_opts=opts.LegendOpts(pos_left="15%"),
    )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    .render("pie_position.html")
)

会在同目录下生成一个pie_position.html网页,打开网页则会显示该代码的运行结果:
在这里插入图片描述
环形图 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Pie
import csv

filename="vote_result.csv"
data_x=[]
#打开文件循环读取数据
with open(filename,'r', encoding='UTF-8') as f:
    reader = csv.reader(f)
    for data_row in reader:
        data_x.append(data_row)
b=[]
c=[]
for index,values in enumerate(data_x):
    if(index>0):
        b.append(values[0])
        c.append(values[1])
d = (
    Pie()
    .add(
         "",
        [list(z) for z in zip(b, c)],
        radius=["40%", "75%"],
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="环形图"),
        legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),
    )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    .render("投票结果+环形图.html")
)

会在同目录下生成一个投票结果+环形图.html网页,打开网页则会显示该代码的运行结果:
在这里插入图片描述
4.奥巴马的政治举措民意调查结果的堆叠柱形图;
数据文件:approval_rate.csv
在这里插入图片描述
堆叠柱形图 代码如下:

from pyecharts import options as opts
from pyecharts.charts import Bar
import csv

filename="approval_rate.csv"
data_x=[]
#打开文件循环读取数据
with open(filename,'r', encoding='UTF-8') as f:
    reader = csv.reader(f)
    for data_row in reader:
        data_x.append(data_row)
x=[]			#读取数据列表集中第一行数据进行赋值
b=[]
c=[]
d=[]
e=[]
for index,values in enumerate(data_x):
    if(index>0):
        b.append(values[0])
        c.append(values[1])
        d.append(values[2])
        e.append(values[3])
    elif(index==0):
        x.append(values)
print(b)
c = (
        Bar()
            .add_xaxis(b)
            .add_yaxis(x[0][1], c, stack="stack1")
            .add_yaxis(x[0][2], d, stack="stack1")
            .add_yaxis(x[0][3], e, stack="stack1")  # 显示在同一条柱状图中,不带stack属性则会分为三条柱状图
            .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
            .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠柱形图"))
            .render("政治举措民意调查结果.html")
    )

会在同目录下生成一个政治举措民意调查结果.html网页,打开网页则会显示该代码的运行结果:
在这里插入图片描述
总结
1、导入相关图表包
2、进行图表的基础设置,创建图表对象
3、利用add()方法进行数据输入与图表设置(可以使用print_echarts_options()来输出所有可配置项)
4、利用render()方法来进行图表保存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值