数据可视化实验四:Pyecharts数据可视化

目录

一、使用PyEcharts绘制全国肺炎确诊人数分布图

1.1 柱状图

1.1.2 代码实现

1.1.2 绘制结果

1.2 饼状图

1.2.1 代码实现

1.2.2 绘制结果

1.3 使用over lap实现图形叠加

1.3.1 代码实现

1.3.2 绘制结果

1.4 地图绘制-Map

1.4.1 代码实现

1.4.2 绘制结果

1.5 地图显示-Geo

1.5.1 代码实现

二、使用pyecharts绘制词云图

2.1 代码实现

2.2 绘制结果


一、使用PyEcharts绘制全国肺炎确诊人数分布图

数据集描述:省份人数.csv

省份

人数

广东

54

北京

87

上海

223

新疆

34

安徽

5

陕西

6

湖南

24

浙江

2

江苏

12

1.1 柱状图

1.1.2 代码实现

# 导入库
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot

# 读取 CSV 文件
data = pd.read_csv("省份人数.csv")

# 将数据转换为字典格式
province = data["省份"].tolist()
confirmed = data["人数"].tolist()
# 进行zip包装
data_dict = dict(zip(province, confirmed))
# 使用 Bar 绘制柱状图
bar = (
    Bar()
    .add_xaxis(province)
    .add_yaxis("确诊人数", confirmed)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="全国各地区肺炎确诊人数分布"),
        # 显示x,y坐标名称
        xaxis_opts=opts.AxisOpts(name="省份", axislabel_opts=opts.LabelOpts(rotate=-45)),
        yaxis_opts=opts.AxisOpts(name="确诊人数"),
    )
)

# 显示结果
make_snapshot(snapshot, bar.render(), "全国各地区确诊人数.png")

1.1.2 绘制结果

1.2 饼状图

1.2.1 代码实现

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot as driver

# 读取CSV文件
data = pd.read_csv("省份人数.csv")

# 提取省份和人数数据
provinces = data["省份"].tolist()
numbers = data["人数"].tolist()

# 绘制饼状图
pie = (
    Pie()
    .add(
        series_name="肺炎确诊人数分布",
        data_pair=[list(z) for z in zip(provinces, numbers)],
        radius=["30%", "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}"))
)

# 使用 make_snapshot 方法将图表直接保存为图片
make_snapshot(driver, pie, "全国各地区肺炎确诊人数分布饼状图.png")

1.2.2 绘制结果

注:将不同省份设置为不同的颜色,以便于区分;结果也可以以html文件的形式输出,本次实验我选择了输出图片为结果。

1.3 使用over lap实现图形叠加

1.3.1 代码实现

# 导入绘图库
from pyecharts.charts import Bar, Line
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot as driver
import pandas as pd

# 读取 CSV 文件
data = pd.read_csv('省份人数.csv')

# 提取省份和人数数据
provinces = data['省份'].tolist()
numbers = data['人数'].tolist()

# 绘制条形图
bar = (
    Bar()
    .add_xaxis(provinces)
    # 同时将颜色调为
    .add_yaxis("确诊人数", numbers, color="red")
    .set_global_opts(title_opts=opts.TitleOpts(title="全国各地区肺炎确诊人数分布"))
)

# 绘制折线图
line = (
    Line()
    .add_xaxis(provinces)
    .add_yaxis("确诊人数", numbers, symbol="emptyCircle", is_symbol_show=True,
               itemstyle_opts=opts.ItemStyleOpts(color="blue"))  # 设置线条颜色为蓝色
)
# 将条形图和折线图叠加在一起
overlap = bar.overlap(line)
# 使用 make_snapshot 生成图片
make_snapshot(driver,  "全国肺炎确诊人数分布.png")

1.3.2 绘制结果

注:将条形图颜色调整为红色、折线图的颜色调整为蓝色,便于区分

1.4 地图绘制-Map

1.4.1 代码实现

# 导入库
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot as driver
# 读取CSV文件
data = pd.read_csv("省份人数.csv")

# 过滤出确诊人数大于零的省份
filtered_data = data[data["人数"] > 0]

# 提取省份和确诊人数
provinces = filtered_data["省份"].tolist()
numbers = filtered_data["人数"].tolist()

# 组装数据为列表套元组的形式,同时过滤没有确诊人数的省份
data_pairs = [(provinces[i], numbers[i]) for i in range(len(provinces)) if numbers[i] > 0]

# 使用 Pyecharts 绘制地图
map_chart = (
    Map()
    .add("确诊人数", data_pairs, "china")
    .set_series_opts(
        label_opts=opts.LabelOpts(is_show=True, formatter=None)
    )  # 直接显示省份名称和人数,而不需要悬停时显示
    .set_global_opts(
        title_opts=opts.TitleOpts(title="全国各地区肺炎确诊人数分布地图"),
        visualmap_opts=opts.VisualMapOpts(max_=max(numbers)),
    )
)

# 使用 make_snapshot 方法将图表直接保存为图片
make_snapshot(driver, map_chart.render(), "全国各地区肺炎确诊人数分布地图Map.png")

1.4.2 绘制结果

注:原数据集中的省份名称末尾都没有加上“省”或自治区等字,导致最开始无法显示出人数。后续将数据集进行调整。

(调整前的输出结果)

调整后:

1.5 地图显示-Geo

1.5.1 代码实现

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Geo

# 读取CSV文件
df = pd.read_csv("省份人数.csv", encoding="utf-8")

# 提取省份和人数数据
provinces = df["省份"].tolist()
numbers = df["人数"].tolist()

# 构造地图数据
map_data = [(provinces[i], numbers[i]) for i in range(len(provinces))]

# 绘制地图
geo = (
    Geo()
    .add_schema(maptype="china")
    .add(
        "确诊人数",
        map_data,
        type_= "scatter",
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(max_=max(numbers)),
        title_opts=opts.TitleOpts(title="全国各地区肺炎确诊人数分布地图"),
    )
)

# 生成html文件
geo.render("全国肺炎确诊人数分布地图geo.html")

1.5.2 绘制结果

二、使用pyecharts绘制词云图

数据集描述:词云.txt

光调制解调器由发送、接收、控制、接口及电源等部分组成。数据终端设备以二进制串行信号形式提供发送的数据,经接口转换为内部逻辑电平送入发送部分,经调制电路调制成线路要求的信号向线路发送。接收部分接收来自线路的信号,经滤波、反调制、电平转换后还原成数字信号送入数字终端设备。类似于电通信中对高频载波的调制与解调,光调制解调器可以对光信号进行调制与解调。不管是模拟系统还是数字系统,输入到光发射机带有信息的电信号,都通过调制转换为光信号。光载波经过光纤线路传输到接收端,再由接收机通过解调把光信号转换为电信号。
光调制器是由微波封装的高频DFB激光二极管与APC、ATC控制电路组成E/O转换部件,利用射频微波信号直接调制超高频激光二极管产生强度调制光信号,再耦合到单模光纤中,经约5km光纤传输后,再由光解调器接收完成O/E转换,光解调器是由高速跨阻放大器的PD组件与宽带低噪声放大器组成。该转换必须保证高线性、低失真传输,因此,要通过减小射频输入功率,增加放大器增益而完成。设计的重点在于器件的微波封装,阻抗匹配,对器件等效电路进行模拟,设计出合理共平面微带线电路,用CAD优化最终达到行波与复数共轭匹配,还要解决系统中高增益前置放大以及减小三阶交调等技术问题。

2.1 代码实现

# -*- coding: utf-8 -*-
from pyecharts import options as opts
from pyecharts.charts import WordCloud

# 从文件中读取数据
with open("词云.txt", "r", encoding="utf-8") as file:
    text=file.read()

# 绘制词云图
wordcloud = (
    WordCloud()
    .add("", [(word, text.count(word)) for word in set(text.split())], word_size_range=[20, 100])
    .set_global_opts(title_opts=opts.TitleOpts(title="光调制解调器词云图"))
)

# 生成图片
wordcloud.render("wordcloud.png")
# 保存词云图
wordcloud.render("wordcloud.html")

2.2 绘制结果

结尾语

“樱花落下后,松了一口气。”不必再患得患失了。——— 《门里梦外》

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值