Python可视化之pyecharts图表绘制

Pyecharts 是一个基于 ECharts 图表库的 Python 类库,它允许用户在 Python 环境中使用 ECharts 创建丰富的交互式图表和数据可视化。ECharts 是百度开源的一个强大的可视化 JavaScript 库,专注于提供交互性和可定制性的数据图表。

1.简介

Pyecharts是由Echarts团队开发的,是便于在Python环境中便捷使用Echarts可视化库

  1. 支持多种图表类型:

    • Pyecharts 提供了丰富的图表类型,包括但不限于折线图、柱状图、散点图、热力图等。这使得用户可以根据不同的数据特点选择合适的图表类型,满足各种数据可视化需求。
  2. 简单易用的 API:

    • Pyecharts 的 API 被设计为简单易用,允许用户使用链式调用或函数式调用的方式来创建和配置图表。这样的设计使得用户可以快速上手,同时代码更具可读性。
  3. 支持多种数据格式:

    • Pyecharts 提供了对多种数据格式的支持,包括 CSV、JSON、pandas 数据框等。这意味着用户可以方便地导入来自不同数据源的数据,无需进行繁琐的数据格式转换。
  4. 可定制化的主题和样式:

    • Pyecharts 支持用户根据自己的需求定制图表的主题和样式。这使得用户可以根据项目的风格或个人偏好进行定制,创建出更加个性化的图表。
  5. 支持交互式操作:

    • Pyecharts 提供了交互式操作的功能,使用户可以通过鼠标滚轮、拖拽等方式对图表进行缩放、平移等操作。这种交互性帮助用户更灵活地探索数据,进行数据分析和发现潜在的模式。

使用Pyecharts库前需要先进行下载

pip install pyecharts

2.pyecharts学习路线

3.常用图表绘制

1.绘制柱状图

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

# 构造数据
x_data = ["A", "B", "C", "D", "E"]
y_data = [10, 20, 15, 25, 30]

# 创建柱状图
bar_chart = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis("柱状图", y_data)
    .set_global_opts(title_opts=opts.TitleOpts(title="简单柱状图"))
)

# 渲染图表
bar_chart.render("bar_chart.html")

我们构造了用于柱状图的数据。x_data 是 x 轴的数据,y_data 是对应的柱状图的数据。

创建了柱状图的实例 bar_chart。通过链式调用,我们使用 add_xaxis 设置 x 轴的数据,使用 add_yaxis 添加柱状图的数据,这里的第一个参数是系列的名称,第二个参数是 y 轴的数据。最后,使用 set_global_opts 设置全局配置,这里设置了图表的标题。

使用 render 方法将图表渲染为一个 HTML 文件,文件名为 "bar_chart.html"。这个文件可以通过浏览器打开,从而查看生成的柱状图。

2.绘制饼图

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

# 构造数据
data = [("A", 10), ("B", 20), ("C", 15), ("D", 25), ("E", 30)]

# 创建饼图
pie_chart = (
    Pie()
    .add("", data)
    .set_global_opts(title_opts=opts.TitleOpts(title="简单饼图"))
)

# 渲染图表
pie_chart.render("pie_chart.html")

通过 add 方法添加饼图的数据,第一个参数是系列的名称,第二个参数是数据。然后使用 set_global_opts 设置全局配置,这里设置了图表的标题。

3.散点图

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

# 构造数据
data = [(10, 20), (20, 30), (30, 40), (40, 50), (50, 60)]

# 创建散点图
scatter_chart = (
    Scatter()
    .add_xaxis([x for x, y in data])
    .add_yaxis(
        series_name="散点图",  # 系列名称
        y_axis=[y for x, y in data],
        symbol_size=20,  # 散点大小
        label_opts=opts.LabelOpts(is_show=True),  # 是否显示标签
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="简单散点图"),
        xaxis_opts=opts.AxisOpts(type_="value", name="X轴"),  # X轴配置
        yaxis_opts=opts.AxisOpts(type_="value", name="Y轴"),  # Y轴配置
    )
)

# 渲染图表
scatter_chart.render("scatter_chart.html")
  • series_name:指定系列的名称。
  • symbol_size:设置表示数据点的符号(标记)的大小。
  • label_opts:配置与数据标签相关的选项,例如是否显示标签 (is_show)。
  • xaxis_optsyaxis_opts:配置 X 轴和 Y 轴的选项,例如轴类型和轴名称。

 

5.中国地图

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

# 构造数据
data = [("北京", 100), ("上海", 200), ("广州", 150), ("深圳", 180), ("重庆", 120)]

# 创建地图
china_map = (
    Map()
    .add("城市", data, maptype="china")
    .set_global_opts(title_opts=opts.TitleOpts(title="中国地图"))
)

# 渲染图表
china_map.render("china_map.html")

 使用 Map 类时,调用了 ECharts 的地图功能,而 ECharts 内置了世界地图和中国地图等数据。因此,当你指定 maptype="china" 时,Pyecharts 会利用 ECharts 内置的中国地图数据进行绘制。

 6.动态轨迹图

from pyecharts.commons.utils import JsCode
from pyecharts import options as opts
from pyecharts.charts import Geo, Timeline

# 构造时间序列数据
trajectory_data = [
    {"time": "2022-01-01", "city": "北京"},
    {"time": "2022-01-02", "city": "上海"},
    {"time": "2022-01-03", "city": "广州"},
    # 添加更多时间序列数据...
]

# 构造城市坐标
city_coordinates = {
    "北京": [116.397, 39.907],
    "上海": [121.473, 31.230],
    "广州": [113.324, 23.102],
    # 添加更多城市坐标...
}

# 创建 Geo 图表
trajectory_map = (
    Geo(init_opts=opts.InitOpts(width="800px", height="600px"))
    .add_schema(maptype="china")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(
            max_=10,  # 数据值的最大值
            min_=0,   # 数据值的最小值
            range_color=["blue", "green"],  # 渐变颜色
            is_piecewise=True,  # 是否为分段型
        ),
        title_opts=opts.TitleOpts(title="动态轨迹图"),
    )
)

# 创建时间轴
timeline = Timeline(init_opts=opts.InitOpts(width="800px", height="600px"))

# 更新动态轨迹数据
for data_point in trajectory_data:
    city = data_point["city"]
    coordinates = city_coordinates.get(city)
    if coordinates:
        map_data = [(city, 1)]  # 每个时间点一个城市,数值设置为1
        trajectory_map.add_coordinate(city, coordinates[0], coordinates[1])
        trajectory_map.add("动态轨迹", map_data, type_="effectScatter", color="blue")

    timeline.add(trajectory_map, time_point=data_point["time"])

# 渲染图表
timeline.render("trajectory_map.html")

 导入模块和数据准备:

  • from pyecharts.commons.utils import JsCode:导入 Pyecharts 中用于写 JavaScript 代码的 JsCode 类。

  • from pyecharts import options as opts:导入 Pyecharts 的 options 模块并别名为 opts

  • from pyecharts.charts import Geo, Timeline:导入 GeoTimeline 类。

  • trajectory_data:一个包含字典的列表,表示时间和城市信息。每个字典有 'time' 和 'city' 键对应的值。

  • city_coordinates:一个字典,将城市名映射到对应的经纬度坐标。

 创建 Geo 图表:

  • Geo(init_opts=opts.InitOpts(width="800px", height="600px")):创建一个 Geo 图表,设置初始宽度和高度。
  • .add_schema(maptype="china"):添加地图类型的模式(在这里是中国地图)。
  • .set_series_opts(label_opts=opts.LabelOpts(is_show=False)):配置系列选项,例如关闭标签以获得更好的可视化效果。
  • .set_global_opts(...):配置图表的全局选项,包括视觉映射选项、标题选项等。

 创建时间轴:

  • Timeline(init_opts=opts.InitOpts(width="800px", height="600px")):创建一个带有初始宽度和高度的时间轴。

 更新动态轨迹数据:

  • 遍历 trajectory_data 中的每个数据点。
  • 获取城市名称和相应的坐标。
  • 如果坐标可用,使用 add_coordinate 将城市坐标添加到 Geo 图表中。
  • 使用 add 方法添加动态效果的散点图,表示每个城市,数值设置为1。

 渲染图表:

  • 将包含动态轨迹数据的时间轴渲染成一个名为 "trajectory_map.html" 的 HTML 文件。

以上仅限于部分例子,以及参数设置,不包括全部的pyecharts图表,更多的图表和参数可以参考官网网站文档进行查询

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python有很多可视化图表绘制的库,以下是其中一些常用的库及其用法: 1. Matplotlib:Matplotlib是Python中最流行的可视化库之一。它支持多种图表类型,如折线图、散点图、直方图、条形图等。以下是一个简单的折线图绘制示例: ``` import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [10, 8, 6, 4, 2] plt.plot(x, y) plt.show() ``` 2. Seaborn:Seaborn是一个基于Matplotlib的高级可视化库,它提供了更多的图表类型和更好的默认样式。以下是一个简单的散点图绘制示例: ``` import seaborn as sns tips = sns.load_dataset("tips") sns.scatterplot(x="total_bill", y="tip", data=tips) ``` 3. Plotly:Plotly是一个交互式可视化库,它可以生成漂亮的图表并支持多种输出格式。以下是一个简单的散点图绘制示例: ``` import plotly.express as px tips = px.data.tips() fig = px.scatter(tips, x="total_bill", y="tip", color="sex") fig.show() ``` 4. Bokeh:Bokeh是一个交互式可视化库,它可以生成漂亮的图表并支持多种输出格式。以下是一个简单的散点图绘制示例: ``` from bokeh.plotting import figure, output_file, show x = [1, 2, 3, 4, 5] y = [10, 8, 6, 4, 2] output_file("scatter.html") p = figure() p.circle(x, y, size=10) show(p) ``` 5. Altair:Altair是一个基于Vega-Lite的声明式可视化库,它可以生成漂亮的图表并支持多种输出格式。以下是一个简单的散点图绘制示例: ``` import altair as alt from vega_datasets import data iris = data.iris() alt.Chart(iris).mark_circle().encode( x='petalLength', y='petalWidth', color='species' ) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值