基础作图-pyecharts-强大的作图模块-数据可视化

Pyecharts-您的动态制图好伙伴!

提示:本身Pyecharts的讲解会非常的长,因为可以做的图就很多,我只是筛选了十二个我认为基础的数据图,更多的制图函数我会放在最后面的文章,还请自行了解。

请先看目录,以此来缩小查找的范围,如果该文章有些小错误,还请见谅......


Pyecharts能做什么?

  • Bar(柱状图):用于创建柱状图
  • Line(折线图):用于创建折线图
  • Pie(饼图):用于创建饼图
  • Scatter(散点图):用于创建散点图
  • EffectScatter(带有涟漪效果的散点图):用于创建带有涟漪效果的散点图
  • Kline(K线图):用于创建K线图,即股票行情图
  • HeatMap(热力图):用于创建热力图
  • Funnel(漏斗图):用于创建漏斗图
  • Gauge(仪表盘):用于创建仪表盘样式的图表
  • Geo(地理坐标系):用于在地理坐标系上绘制各种类型的地理数据,如地理分布、迁徙等
  • Map(地理坐标系上的地区分布):与Geo类似,但主要针对中国及世界各国的省份、城市等进行可视化展示
  • WordCloud(词云):以文字为主题,根据词频生成具有艺术性和创意性的词云图片

pyecharts的设计

pyecharts易于使用,基于Echarts框架,提供了一套用户友好、易于使用的Python API,用于创建多样化的交互式图表。而可视化效果和交互性更出色,不仅提供了各种数据可视化图表选择以及插件,而且支持通过JavaScript进行交互,可以方便地开发基于Python的web应用。
所以pyecharts则更加适合web应用开发数据可视化展示,提供了各种插件和可视化组件,允许开发人员使用Python和JS编程方式进行交互式的数据可视化展示。


Pyecharts所有制图的基本函数

 

每个图表所需的函数列表
Bar(柱状图)Bar()add_xaxis()add_yaxis()set_global_opts()render()
Line(折线图)Line()add_xaxis()        add_yaxis()set_global_opts()render()
Pie(饼图)Pie()add()(添加饼图数据)set_global_opts()render()
Scatter(散点图)Scatter()add_xaxis()add_yaxis()set_global_opts()render()
Kline(K线图)Kline()add_xaxis()add_yaxis()set_global_opts()render()
HeatMap(热力图)HeatMap()set_global_opts()render()
Funnel(漏斗图)Funnel()add()set_global_opts()render()       
Gauge(仪表盘)Gauge()set_global_opts()render()
Map(地理图)Map()add()set_global_opts()render()
Geo(地理坐标系)Geo()add_schema()
add_coordinate()
add_coordinate()
set_series_options()
set_global_opts()render()
WordCloud(词云)WordCloud()add()set_global_opts()render()
EffectScatter(涟漪效果的散点图)EffectScatter()add_xaxis()add_yaxis()set_global_opts()
 (需设置visualmap_opts)
render()

可以看到必须要的函数,最基础的一点就是创建图表,每一个不同的数据图都有自己函数,你可以理解为:一张空白的蓝图图纸
相同点都需要set_global_opts(),你可以理解为:在蓝图上制作相对应的框架

还有一个相同点则是需要rende(),如果你做了数据图,但是你又不去生成它,如同白做,你可以理解为:图纸画完了,去实现蓝图上的物品

上述是并未使用了add一类的函数,如果按照上方文字三步骤,你会得到一张只有基本框架的图,这种图并没有数据呈现


Pyecharts所有制图过程(带参演示)

注明:下列基础代码欢迎自行调试,如果应用到其他博客网站,请标注原创作者!

现在进入了正片,如何制作基本框架,并传入值生成带有数据的数据图

Pyecharts —— Bar(柱状图)

# 你需要import下列pyecharts,否则不会运行
from pyecharts import options as opts
from pyecharts.charts import Bar

# 创建柱状图实例
bar_chart = Bar()

# 添加数据和配置项
bar_chart.add_xaxis(["Category 1", "Category 2", "Category 3"])  # x轴数据
bar_chart.add_yaxis("Series 1", [10, 20, 30])  # y轴数据

# 设置全局配置项
bar_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Bar Chart"),  # 图表标题
    xaxis_opts=opts.AxisOpts(name="Category"),  # x轴配置
    yaxis_opts=opts.AxisOpts(name="Value"),  # y轴配置
)

# 渲染(生成)图表,可以选择将结果保存为HTML文件或直接在Jupyter Notebook中显示
bar_chart.render("bar_chart.html")


Pyecharts——Line(折线图)

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

# 创建折线图实例
line_chart = Line()

# 添加数据和配置项
line_chart.add_xaxis(["Category 1", "Category 2", "Category 3"])  # x轴数据
line_chart.add_yaxis("Series 1", [10, 20, 30])  # y轴数据

# 设置全局配置项
line_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Line Chart"),  # 图表标题
    xaxis_opts=opts.AxisOpts(name="Category"),  # x轴配置
    yaxis_opts=opts.AxisOpts(name="Value"),  # y轴配置
)

# 渲染(生成)图表,可以选择将结果保存为HTML文件或直接在Jupyter Notebook中显示
line_chart.render("line_chart.html")


Pyecharts——Pie(饼图)

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

# 创建饼图实例
pie_chart = Pie()

# 添加数据和配置项
pie_chart.add("", [("Category 1", 10), ("Category 2", 20), ("Category 3", 30)])  # 数据格式为(name, value)

# 设置全局配置项
pie_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Pie Chart"),  # 图表标题
    legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),  # 图例配置
)

# 设置系列配置项
pie_chart.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))  # 标签格式化

# 渲染(生成)图表,可以选择将结果保存为HTML文件或直接在Jupyter Notebook中显示
pie_chart.render("pie_chart.html")


Pyecharts——Scatter(散点图)

散点图一般数据多会越好,散点图可以明显直观的看到分布情况

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

# 创建散点图实例
scatter_chart = Scatter()

# 添加数据和配置项
scatter_chart.add_xaxis([1, 2, 3, 4, 5])  # x轴数据
scatter_chart.add_yaxis("Series 1", [10, 20, 30, 40, 50])  # y轴数据

# 设置全局配置项
scatter_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Scatter Chart"),  # 图表标题
    xaxis_opts=opts.AxisOpts(name="X"),  # x轴配置
    yaxis_opts=opts.AxisOpts(name="Y"),  # y轴配置
)

# 渲染(生成)图表,可以选择将结果保存为HTML文件或直接在Jupyter Notebook中显示
scatter_chart.render("scatter_chart.html")


Pyecharts——Kline(K线图)


Pyecharts——Kine(K线图)

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

# 创建热力图实例
heatmap_chart = HeatMap()

# 添加数据和配置项
data = [
    ["Monday", "Morning", 27],
    ["Monday", "Afternoon", 35],
    ["Monday", "Evening", 28],
    ["Tuesday", "Morning", 23],
    ["Tuesday", "Afternoon", 33],
    ["Tuesday", "Evening", 21],
    ["Wednesday", "Morning", 17],
    ["Wednesday", "Afternoon", 25],
    ["Wednesday", "Evening", 13]
]

categories = ["Monday", "Tuesday", "Wednesday"] # x轴数据,表示星期几
times = ["Morning", "Afternoon","Evening"] # y轴数据,表示时间段

heatmap_chart.add_xaxis(categories)
heatmap_chart.add_yaxis("Temperature", times, data) # y轴数据包括category和value

# 设置全局配置项
heatmap_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Temperature HeatMap"), # 图表标题
    visualmap_opts=opts.VisualMapOpts(), # 热力图颜色映射配置项
)

# 渲染(生成)图表,可以选择将结果保存为HTML文件或直接在Jupyter Notebook中显示
heatmap_chart.render("heatmap_chart.html")


Pyecharts——Funnel(漏斗图)

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

# 创建漏斗图实例
funnel_chart = Funnel()

# 添加数据和配置项
data = [("Step 1", 100),
        ("Step 2", 80),
        ("Step 3", 60),
        ("Step 4", 40),
        ("Step 5", 20)]

funnel_chart.add("", data) # 添加数据

# 设置全局配置项
funnel_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Funnel Chart"), # 图表标题
    toolbox_opts=opts.ToolboxOpts(), # 工具箱配置项
)

# 渲染(生成)图表,可以选择将结果保存为HTML文件或直接在Jupyter Notebook中显示
funnel_chart.render("funnel_chart.html")


Pyecharts——Gauge(仪表盘)

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

# 创建仪表盘实例
gauge_chart = Gauge()

# 添加数据和配置项
data = [("Label", 66.6)] # 标签和数值

gauge_chart.add("", data) # 添加数据

# 设置全局配置项
gauge_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Gauge Chart"), # 图表标题
    toolbox_opts=opts.ToolboxOpts(), # 工具箱配置项
)

# 渲染(生成)图表,可以选择将结果保存为HTML文件或直接在Jupyter Notebook中显示
gauge_chart.render("gauge_chart.html")


Pyecharts——Map(地理图)

我这里使用中国地图演示——地图来源是pyecharts
Map可以指定地图类型,全球地图,国家地图,某一个国家的省级地图,某个省的市级地图
只要该Map地图类型有,就会制作相应的地图!
 

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

# 创建地理图实例
map_chart = Map()

# 添加数据和配置项
data = [("北京", 100),
        ("上海", 200),
        ("广州", 150),
        ("深圳", 180),
        ("成都", 120)]

map_chart.add("", data, "china") # 添加数据,指定地图类型为中国地图

# 设置全局配置项
map_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Map Chart"), # 图表标题
    visualmap_opts=opts.VisualMapOpts(), # 可视化映射配置项
)

# 渲染(生成)图表,可以选择将结果保存为HTML文件或直接在Jupyter Notebook中显示
map_chart.render("map_chart.html")


Pyecharts——Geo(地理坐标系)

地理坐标系用法可以说已经多到可以再另开一课了,所以我只展示其中的一种
Geo在地理坐标系上绘制点,线,分段显示等,常用来制作航行路线、标记事件地点等

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import GeoType, ThemeType, SymbolType  # Geo图的类型 主题 涟漪图形符号
# 吉林长春有朝阳区,北京也有朝阳区。为了不影响效果,将北京朝阳区换成了东城区
# 在python资源库查看包含朝阳字的地区:python包路径site-packages-pyecharts-datasets-json文件
data = [("海淀区", "1503"), ("东城区", "9540"), ("石景山区", "4820"), ("丰台区", "3670"), ("通州区", "6493")]

geo = (
    Geo(init_opts=opts.InitOpts(theme=ThemeType.DARK))
        .add_schema(maptype="北京",
                    itemstyle_opts=opts.ItemStyleOpts(color='white', border_color="#EE2C2C"),
                    zoom=1.5,
                    is_roam=True,
                    center=Geo().get_coordinate('海淀区'),  # 视角中心
                    emphasis_itemstyle_opts=opts.ItemStyleOpts(color="#31708f"),  # 高亮颜色
                    emphasis_label_opts=opts.LabelOpts(color="white")   # 字体颜色
                    )

        # 上面提到有重复的名称,可以手动添加一个新名字来代替朝阳区,比如北京朝阳区方法如下
        .add_coordinate("北京朝阳区", 116.48548, 39.9484)

        .add("店铺数量",
             data,
             type_=GeoType.EFFECT_SCATTER,
             symbol_size=6,
             )

        .add("走直线",
             [("海淀区", "东城区"), ("海淀区", "丰台区"), ("海淀区", "石景山区"), ("海淀区", "通州区")],
             type_=GeoType.LINES,
             effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=6, color='#5f99bb'),
             linestyle_opts=opts.LineStyleOpts(curve=0, color="#B0E2FF"))
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
        title_opts=opts.TitleOpts(title="北京市", subtitle="数据大图", pos_right="center", pos_top="5%"))
)
geo.render("geo_chart.html")


Pyecharts——WordCloud(词云)

对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,方便领略文本的主旨

from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
from pyecharts import options as opts

# 词云数据,格式为(词语, 频率)
data = [
    ("Python", 100),
    ("Java", 80),
    ("C++", 60),
    ("JavaScript", 50),
    ("HTML", 40),
    ("CSS", 30),
]

# 创建词云图对象
wordcloud = (
    WordCloud()
    .add("", data, word_size_range=[20, 100], shape=SymbolType.DIAMOND)
    .set_global_opts(title_opts=opts.TitleOpts(title="Word Cloud"))
)

# 渲染并显示词云图
wordcloud.render("word_cloud.html")


Pyecharts——EffectScatter(涟漪特效散点图)

from pyecharts import options as opts
from pyecharts.charts import EffectScatter
from pyecharts.faker import Faker

c = (
    EffectScatter()
    .add_xaxis(Faker.choose())
    .add_yaxis("", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="EffectScatter-基本示例"))

)
c.render("EffectScatter_chart.html")




通用的配置选项——使数据图美观

通用配置项

pyecharts库提供了一些通用的配置项,可以用来自定义图表的样式和外观。以下是一些常用的通用配置项:

  • title_opts:设置标题选项,如标题文本、字体大小、位置等。
  • legend_opts:设置图例选项,如图例类型(普通图例或滚动图例)、图例位置等。
  • tooltip_opts:设置提示框选项,如是否显示提示框、提示框内容格式等。
  • toolbox_opts:设置工具箱选项,如是否显示工具箱、工具箱中包含的工具按钮等。
  • xaxis_optsyaxis_opts:分别设置横坐标和纵坐标轴选项,如轴线颜色、刻度标签字体大小等。
  • visualmap_opts:设置视觉映射组件选项,可用于调整颜色、大小等视觉效果。

以上的配置项都是在set_global_opts()内设置的!
除此之外还有一些特殊一些的配置项:

  • dataZoom:用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot) 
  • lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel) 
  • grid3D:3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)

  • axis3D:3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D) 

  • markLine&markPorint:图形标记组件,用于标记指定的特殊数据,又标记线和标记点两种。(Bar、Line、Kline)

通用项设置不会影响您的整体数据图结构,这些设置本意是让图变得美观,能够让人更快的理解,更好的分析!如果您的数据图框架是错误的还请不要先写入通用项设置!


自定义类

  • Grid:可以在一个页面中并行显示多张图表。通过将多个图表对象传递给Grid()构造函数,并使用.add()方法将它们添加到网格中,然后使用.render()方法渲染为HTML文件。

  • Overlap:可以将不同类型的图表叠加在同一张图上展示。通过创建一个空白的基础图表对象,并使用.overlap()方法分别添加不同类型的子图表对象,然后使用.render()方法渲染为HTML文件。

  • Page:可以在同一网页中按顺序展示多个图表。通过创建一个空白的页面对象,并使用.add()方法按顺序添加各个图表对象,然后使用.render()方法渲染为HTML文件。

  • Timeline:可以提供时间线轮播多张图表。通过创建一个时间线对象,并使用.add()方法分别添加每个时间点对应的图表对象,然后使用.render()方法渲染为HTML文件。

这些类都是用于组合不同类型的图表展示方式,以满足更复杂的需求,适合老手使用


一些其他的图像制作

  • Bar3D(3D 柱状图) 
  • Boxplot(箱形图) 
  • Line3D(3D 折线图) 
  • Liquid(水球图) 
  • Parallel(平行坐标系) 
  • Polar(极坐标系) 
  • Radar(雷达图) 
  • Sankey(桑基图) 
  • Scatter3D(3D 散点图) 
  • ThemeRiver(主题河流图) 

以上的图像我不会放在我的文章下,如果你要查看这类图像的话可以前往@ezreal_tao的文章!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值