我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python数据可视化之Pyecharts使用详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python数据可视化之Pyecharts使用详解

1. 安装Pyecharts

pip install pyecharts

2. 图表基础

2.1 主题风格

添加主题风格使用的是 InitOpts() 方法,

该方法的主要参数有:

参数描述
width画布宽度,要求字符串格式,如 width=“500px”
height画布高度,要求字符串格式,如 width=“500px”
chart_id图表ID,作为图表的唯一标识。有多个图表时用来区分不同的图表
page_title网页标题,字符串格式
theme图表主题。由ThemeType模块提供
bg_color图表背景颜色,字符串格式

可以选择的风格有:

2.2 图表标题

给图表添加标题需要通过 set_global_options()方法 的 title_opts参数,

该参数的值通过opts模块的TitleOpts()方法生成,

且TitleOpts()方法主要参数语法如下:

2.3 图例

设置图例需要通过 set_global_opts()方法的 legend_opts参数,

该参数的参数值参考options模块的LegendOpts()方法。

LegendOpts() 方法的主要参数如下:

2.4 提示框

设置提示框主要是通过 set_global_opts()方法中的 tooltip_opts参数进行设置,

该参数的参数值参考options模块的TooltipOpts()方法。

TooltipOpts()方法的主要参数如下:

2.5 视觉映射

视觉映射通过 set_global_opts()方法中的 visualmap_opts参数进行设置,

该参数的取值参考options模块的VisualMapOpts()方法。

其主要参数如下:

2.6 工具箱

工具箱通过 set_global_opts()方法中的 toolbox_opts参数进行设置,

该参数的取值参考options模块的ToolboxOpts()方法。

其主要参数如下:

2.7 区域缩放

区域缩放通过 set_global_opts()方法中的 datazoom_opts参数进行设置,

该参数的取值参考options模块的DataZoomOpts()方法。

其主要参数如下:

3. 柱状图 Bar模块

绘制柱状图通过Bar模块来实现,

该模块的主要方法有:

主要方法描述
add_xaxis()x轴数据
add_yaxis()y轴数据
reversal_axis()翻转x、y轴数据
add_dataset()原始数据

下边展示一个简单的示例,先不使用过多复杂的样式:

import numpy as np
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType

# 生成数据
years = [2011, 2012, 2013, 2014, 2015]
y1 = [1, 3, 5, 7, 9]
y2 = [2, 4, 6, 4, 2]
y3 = [9, 7, 5, 3, 1]
y4 = list(np.random.randint(1, 10, 10))

bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
# 为柱状图添加x轴和y轴数据
bar.add_xaxis(years)
bar.add_yaxis('A型', y1)
bar.add_yaxis('B型', y2)
bar.add_yaxis('C型', y3)
bar.add_yaxis('D型', y4)
# 渲染图表到HTML文件,并保存在当前目录下
bar.render("bar.html")

生成图像效果如下:

这里有一个无法解释的细节,就是可以看到y4数据,即D型,在图像中没有显示出来。经过小啾的反复尝试,发现凡是使用随机数产生的数据再转化成列表,这部分随机数不会被写入到html文件中:

既然不会解释,那就避免。

4. 折线图/面积图 Line模块

Line模块的主要方法有add_xaxis() 和 add_yaxis(),分别用来添加x轴数据和y轴数据。

add_yaxis()的主要参数如下:

4.1 折线图

绘制折线图时,x轴的数据必须是字符串,图线方可正常显示。

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

# 准备数据
x = [2011, 2012, 2013, 2014, 2015]
x_data = [str(i) for i in x]
y1 = [1, 3, 2, 5, 8]
y2 = [2, 6, 5, 6, 7]
y3 = [5, 7, 4, 3, 1]

line = Line(init_opts=opts.InitOpts(theme=ThemeType.ESSOS))
line.add_xaxis(xaxis_data=x_data)
line.add_yaxis(series_name="A类", y_axis=y1)
line.add_yaxis(series_name="B类", y_axis=y2)
line.add_yaxis(series_name="C类", y_axis=y3)
line.render("line.html")

生成图像效果如下:

4.2 面积图

绘制面积图时需要在add_yaxis()方法中指定areastyle_opts参数。其值由options模块的AreaStyleOpts()方法提供。

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


x = [2011, 2012, 2013, 2014, 2015]
x_data = [str(i) for i in x]
y1 = [2, 5, 6, 8, 9]
y2 = [1, 4, 5, 4, 7]
y3 = [1, 3, 4, 6, 6]

line = Line(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND))

line.add_xaxis(xaxis_data=x_data)
line.add_yaxis(series_name="A类", y_axis=y1, areastyle_opts=opts.AreaStyleOpts(opacity=1))
line.add_yaxis(series_name="B类", y_axis=y2, areastyle_opts=opts.AreaStyleOpts(opacity=1))
line.add_yaxis(series_name="C类", y_axis=y3, areastyle_opts=opts.AreaStyleOpts(opacity=1))

line.render("line2.html")

图像效果如下:

5.饼形图

5.1 饼形图

绘制饼形图使用的是Pie模块,该模块中需要使用的主要方法是add()方法

该方法主要参数如下:

主要参数描述
series_name系列名称。用于提示文本和图例标签。
data_pair数据项,格式为形如[(key1,value1),(key2,value2)]
color系列标签的颜色。
radius饼图的半径。默认设成百分比形式,默认是相对于容器的高和宽中较小的一方的一半
rosetype是否展开为南丁格尔玫瑰图,可以取的值有radius货area,radius表示通过扇区圆心角展现数据的大小,即默认的扇形图;area表示所有扇区的圆心角的角度相同,通过半径来展现数据大小
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.globals import ThemeType

x_data = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF']
y_data = [200, 200, 100, 400, 500, 600]
# 将数据转换为目标格式
data = [list(z) for z in zip(x_data, y_data)]
# 数据排序
data.sort(key=lambda x: x[1])

pie = Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))

pie.add(
        series_name="类别",    # 序列名称
        data_pair=data,     # 数据
    )
pie.set_global_opts(
        # 饼形图标题
        title_opts=opts.TitleOpts(
            title="各类别数量分析",
            pos_left="center"),
        # 不显示图例
        legend_opts=opts.LegendOpts(is_show=False),
    )
pie.set_series_opts(
        # 序列标签
        label_opts=opts.LabelOpts(),
    )

pie.render("pie.html")

图像效果如下:

5.2 南丁格尔玫瑰图

from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.globals import ThemeType


x_data = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF', 'GGG', 'HHH', 'III', 'JJJ', 'KKK', 'LLL', 'MMM', 'NNN', 'OOO']
y_data = [200, 100, 400, 50, 600, 300, 500, 700, 800, 900, 1000, 1100, 1200, 1300, 1500]
# 将数据转换为目标格式
data = [list(z) for z in zip(x_data, y_data)]
# 数据排序
data.sort(key=lambda x: x[1])

# 创建饼形图并设置画布大小
pie = Pie(init_opts=opts.InitOpts(theme=ThemeType.ROMANTIC, width='300px', height='400px'))
# 为饼形图添加数据
pie.add(
        series_name="类别",
        data_pair=data,
        radius=["8%", "160%"],  # 内外半径
        center=["65%", "65%"],  # 位置
        rosetype='area',       # 玫瑰图,圆心角相同,按半径大小绘制
        color='auto'           # 颜色自动渐变
    )
pie.set_global_opts(
        # 不显示图例
        legend_opts=opts.LegendOpts(is_show=False),
        # 视觉映射
        visualmap_opts=opts.VisualMapOpts(is_show=False,
         min_=100,    # 颜色条最小值
         max_=450000, # 颜色条最大值
    )
)
pie.set_series_opts(
        # 序列标签
        label_opts=opts.LabelOpts(position='inside',  # 标签位置
                                  rotate=45,
                                  font_size=8)       # 字体大小
    )

pie.render("pie2.html")

图像效果如下:

6. 箱线图 Boxplot模块

绘制箱线图使用的是Boxplot类。

这里有一个细节,准备y轴数据y_data时需要在列表外再套一层列表,否则图线不会被显示。

绘制箱线图使用的是Boxplot模块,

主要的方法有

add_xaxis()和add_yaxis()

from pyecharts.charts import Boxplot
from pyecharts.globals import ThemeType
from pyecharts import options as opts

y_data = [[5, 20, 22, 21, 23, 26, 25, 24, 28, 26, 29, 30, 50, 61]]

boxplot = Boxplot(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC))

boxplot.add_xaxis([""])
boxplot.add_yaxis('', y_axis=boxplot.prepare_data(y_data))
boxplot.render("boxplot.html")

图像效果如下:

7. 涟漪特效散点图 EffectScatter模块

绘制涟漪图使用的是EffectScatter模块,代码示例如下:

from pyecharts.charts import EffectScatter
from pyecharts import options as opts
from pyecharts.globals import ThemeType


x = [2011, 2012, 2013, 2014, 2015]
x_data = [str(i) for i in x]
y1 = [1, 3, 2, 5, 8]
y2 = [2, 6, 5, 6, 7]
y3 = [5, 7, 4, 3, 1]

scatter = EffectScatter(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
scatter.add_xaxis(x_data)
scatter.add_yaxis("", y1)
scatter.add_yaxis("", y2)
scatter.add_yaxis("", y3)
# 渲染图表到HTML文件,存放在程序所在目录下
scatter.render("EffectScatter.html")

图像效果如下:

8. 词云图 WordCloud模块

绘制词云图使用的是WordCloud模块,

主要的方法有add()方法。

add()方法的主要参数如下:

add()方法主要的参数有

准备一个txt文件(001.txt),文本内容以《兰亭集序》为例:

永和九年,岁在癸丑,暮春之初,会于会稽山阴之兰亭,修禊事也。群贤毕至,少长咸集。此地有崇山峻岭,茂林修竹,又有清流激湍,映带左右,引以为流觞曲水,列坐其次。虽无丝竹管弦之盛,一觞一咏,亦足以畅叙幽情。
是日也,天朗气清,惠风和畅。仰观宇宙之大,俯察品类之盛,所以游目骋怀,足以极视听之娱,信可乐也。
夫人之相与,俯仰一世。或取诸怀抱,悟言一室之内;或因寄所托,放浪形骸之外。虽趣舍万殊,静躁不同,当其欣于所遇,暂得于己,快然自足,不知老之将至;及其所之既倦,情随事迁,感慨系之矣。向之所欣,俯仰之间,已为陈迹,犹不能不以之兴怀,况修短随化,终期于尽!古人云:“死生亦大矣。”岂不痛哉!
每览昔人兴感之由,若合一契,未尝不临文嗟悼,不能喻之于怀。固知一死生为虚诞,齐彭殇为妄作。后之视今,亦犹今之视昔,悲夫!故列叙时人,录其所述,虽世殊事异,所以兴怀,其致一也。后之览者,亦将有感于斯文。

代码示例如下:

from pyecharts.charts import WordCloud
from jieba import analyse

# 基于TextRank算法从文本中提取关键词
textrank = analyse.textrank
text = open('001.txt', 'r', encoding='UTF-8').read()
keywords = textrank(text, topK=30)
list1 = []
tup1 = ()

# 关键词列表
for keyword, weight in textrank(text, topK=30, withWeight=True):
    # print('%s %s' % (keyword, weight))
    tup1 = (keyword, weight)  # 关键词权重
    list1.append(tup1)     # 添加到列表中

# 绘制词云图
mywordcloud = WordCloud()
mywordcloud.add('', list1, word_size_range=[20, 100])
mywordcloud.render('wordclound.html')

词云图效果如下:

9. 热力图 HeatMap模块

绘制热力图使用的是HeatMap模块。

下边以双色球案例为例,数据使用生成的随机数,绘制出热力图:

import pyecharts.options as opts
from pyecharts.charts import HeatMap
import pandas as pd
import numpy as np

# 创建一个33行7列的DataFrame,数据使用随机数生成。每个数据表示该位置上该数字出现的次数
s1 = np.random.randint(0, 200, 33)
s2 = np.random.randint(0, 200, 33)
s3 = np.random.randint(0, 200, 33)
s4 = np.random.randint(0, 200, 33)
s5 = np.random.randint(0, 200, 33)
s6 = np.random.randint(0, 200, 33)
s7 = np.random.randint(0, 200, 33)
data = pd.DataFrame(
    {'位置一': s1,
     '位置二': s2,
     '位置三': s3,
     '位置四': s4,
     '位置五': s5,
     '位置六': s6,
     '位置七': s7
     },
    index=range(1, 34)
)

# 数据转换为HeatMap支持的列表格式
value1 = []
for i in range(7):
    for j in range(33):
        value1.append([i, j, int(data.iloc[j, i])])
# 绘制热力图
x = data.columns
heatmap=HeatMap(init_opts=opts.InitOpts(width='600px' ,height='650px'))
heatmap.add_xaxis(x)
heatmap.add_yaxis("aa", list(data.index), value=value1,  # y轴数据
                  # y轴标签
                  label_opts=opts.LabelOpts(is_show=True, color='white', position="center"))
heatmap.set_global_opts(title_opts=opts.TitleOpts(title="双色球中奖号码热力图", pos_left="center"),
                        legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例
                        # 坐标轴配置项
                        xaxis_opts=opts.AxisOpts(
                        type_="category",  # 类目轴
                        # 分隔区域配置项
                        splitarea_opts=opts.SplitAreaOpts(
                            is_show=True,  # 区域填充样式
                            areastyle_opts=opts.AreaStyleOpts(opacity=1)
                        ),
                        ),
                        # 坐标轴配置项
                        yaxis_opts=opts.AxisOpts(
                        type_="category",  # 类目轴
                        # 分隔区域配置项
                        splitarea_opts=opts.SplitAreaOpts(
                            is_show=True,
                            # 区域填充样式
                            areastyle_opts=opts.AreaStyleOpts(opacity=1)
                            ),
                            ),

                        # 视觉映射配置项
                        visualmap_opts=opts.VisualMapOpts(is_piecewise=True,    # 分段显示
                                                          min_=1, max_=170,     # 最小值、最大值
                                                          orient='horizontal',  # 水平方向
                                                          pos_left="center")    # 居中
                        )
heatmap.render("heatmap.html")

热力图效果如下:

10. 水球图 Liquid模块

绘制水球图使用的是Liquid模块。

from pyecharts.charts import Liquid
liquid = Liquid()
liquid.add('', [0.39])
liquid.render("liquid.html")

水球图效果如下:

11. 日历图 Calendar模块

绘制日历图使用的是Calendar模块

主要使用的方法是add()方法

import pandas as pd
import numpy as np
from pyecharts import options as opts
from pyecharts.charts import Calendar
data = list(np.random.random(30))
# 求最大值和最小值
mymax = round(max(data), 2)
mymin = round(min(data), 2)
# 生成日期
index = pd.date_range('20220401', '20220430')
# 合并列表
data_list = list(zip(index, data))
# 生成日历图
calendar = Calendar()
calendar.add("",
             data_list,
             calendar_opts=opts.CalendarOpts(range_=['2022-04-01', '2022-04-30']))
calendar.set_global_opts(
        title_opts=opts.TitleOpts(title="2022年4月某指标情况", pos_left='center'),
        visualmap_opts=opts.VisualMapOpts(
            max_=mymax,
            min_=mymin+0.1,
            orient="horizontal",
            is_piecewise=True,
            pos_top="230px",
            pos_left="70px",
        ),
    )
calendar.render("calendar.html")

日历图效果如下:

以上就是Python数据可视化之Pyecharts使用详解的详细内容,更多关于Python Pyecharts的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python数据可视化之Pyecharts使用详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python数据可视化之Pyecharts如何使用

这篇“Python数据可视化之Pyecharts如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python数据可视化
2023-07-06

数据可视化之pyecharts

pyechats是一个用于数据可视化的包。Echats是百度开源的一个数据可视化js库,主要用于数据可视化,pyecharts 是一个用于生成Echarts图标的类库,实际上就是Echarts和Python的对接。pyecharts支持py
2023-01-30

Python数据可视化详解

数据可视化是一种将庞杂抽象的数据转化为直观易懂的图形的数据呈现技术,它能帮助我们快速把握数据的分布和规律,更加轻松地理解和探索信息,本文通过代码图片详细介绍了Python数据可视化,感兴趣的小伙伴可以参考阅读
2023-05-16

python用pyecharts实现地图数据可视化的方法

这篇文章给大家分享的是有关python用pyecharts实现地图数据可视化的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。有的时候,我们需要对不同国家或地区的某项指标进行比较,可简单通过直方图加以比较。但直
2023-06-14

Python数据可视化之Seaborn怎么使用

这篇文章主要介绍了Python数据可视化之Seaborn怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python数据可视化之Seaborn怎么使用文章都会有所收获,下面我们一起来看看吧。1. 安装 s
2023-06-30

Python数据分析之绘图和可视化详解

一、前言 matplotlib是一个用于创建出版质量图表的桌面绘图包(主要是2D方面)。该项目是由John Hunter于2002年启动的,其目的是为Python构建一个MATLAB式的绘图接口。matplotlib和IPython社区进行
2022-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录