Python数据可视化案例——折线图

目录

json介绍:

Pyecharts介绍

安装pyecharts包 

构建一个基础的折线图

配置全局配置项

综合案例:

使用工具对数据进行查看 :

数据处理


json介绍:

  json是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据。不同语言格式之间通过json进行转化,json本质上为字符串。

 下面演示使用json进行数据格式的转化。

  python转为json使用json的dumps方法。

代码演示:

import json
# python转为json
# 列表转化
data =[{"name":"张三","age":12},{"name":"王五","age":13},{"name":"李四","age":14}]
json_str1=json.dumps(data,ensure_ascii= False) # ensure_ascii= false,让中文内容直接输出不转换为码
print(type(json_str1))
print(json_str1)

# 字典转化
d={'name':'李四','age':12}
json_str2=json.dumps(d,ensure_ascii= False)
print(type(json_str2))
print(json_str2)

运行结果: 

 反过来,json转为python使用json的loads方法。  

代码演示:

data ='[{"name":"张三","age":12},{"name":"王五","age":13},{"name":"李四","age":14}]'
list1=json.loads(data)
print(type(list1))
print(list1)

运行结果:

Pyecharts介绍

  Pyecharts是一个基于Python的开源数据可视化库,它用于创建交互式的图表和图形。Pyecharts可以生成各种类型的图表,包括折线图、柱状图、散点图、饼图等。它提供了丰富的图表样式和配置选项,使用户能够自定义图表的外观和行为。

 打开pyecharts查看官方示例。 

安装pyecharts包 

构建一个基础的折线图

代码:

from pyecharts.charts import Line

line = Line()
# 添加x轴数据
line.add_xaxis(['中国','美国','日本'])
# 添加y轴数据
line.add_yaxis('GDP',[30,20,10])
# 查看图像
line.render()

 运行代码会发现出现一个html结尾的网页文件。

选择一个浏览器打开 。

效果如下图。

配置全局配置项

  通过导入包的更多功能添加一些更多的属性. 

from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts# 引入标题

line = Line()
# 添加x轴数据
line.add_xaxis(['中国','美国','日本'])
# 添加y轴数据
line.add_yaxis('GDP',[30,20,10])

# 设置全局配置项
line.set_global_opts(
    # 设置标题,并且控制位置
    title_opts=TitleOpts(title='GDP展示',pos_left='center',pos_bottom='1%'),
    legend_opts= LegendOpts(is_show=True),
    toolbox_opts= ToolboxOpts(is_show=True),
)
# 查看图像
line.render()

效果图: 

综合案例:

  生成2022年美日印新冠疫情确诊人数折线对比图。

使用工具对数据进行查看 :

  准备好的文件中的json数据如下:

  在abc173网站中对该json数据格式化,直观看出层次结构(点击json视图工具)。

数据处理:

  我们需要获取json数据中的2020年的日期作为x轴,该年的确诊人数作为y轴。

美国数据处理的代码演示:

# 读取json文件
f_us =open('D:/美国.txt','r',encoding='UTF-8')
us_data=f_us.read()
# 去掉开头和结尾不规范字符
us_data=us_data.replace('jsonp_1629344292311_69436(','')
us_data=us_data[:-2]

# json转python字典
us_dict=json.loads(us_data)

# 获取trend key
us_trend=us_dict['data'][0]['trend']

# 获取日期数据,用于x轴,取2020年
us_x_data=us_trend['updateDate'][:314]
# 验证 print(us_x_data)

# 获取确诊人数数据,用于y轴,取2020年
us_y_data=us_trend['list'][0]['data'][:314]
# 验证 print(us_y_data)

   同样的对日本和印度的json数据进行相应的处理。

import json

from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts# 引入标题

# 读取json文件
f_us =open('D:/美国.txt','r',encoding='UTF-8')
us_data=f_us.read()

f_jp =open('D:/日本.txt','r',encoding='UTF-8')
jp_data=f_jp.read()

f_in =open('D:/印度.txt','r',encoding='UTF-8')
in_data=f_in.read()

# 去掉开头和结尾不规范字符
us_data=us_data.replace('jsonp_1629344292311_69436(','')
us_data=us_data[:-2]

jp_data=jp_data.replace('jsonp_1629350871167_29498(','')
jp_data=jp_data[:-2]

in_data=in_data.replace('jsonp_1629350745930_63180(','')
in_data=in_data[:-2]

# json转python字典
us_dict=json.loads(us_data)
jp_dict=json.loads(jp_data)
in_dict=json.loads(in_data)

# 获取trend key
us_trend=us_dict['data'][0]['trend']
jp_trend=jp_dict['data'][0]['trend']
in_trend=in_dict['data'][0]['trend']

# 获取日期数据,用于x轴,取2020年
us_x_data=us_trend['updateDate'][:314]
jp_x_data=jp_trend['updateDate'][:314]
in_x_data=in_trend['updateDate'][:314]

# 获取确诊人数数据,用于y轴,取2020年
us_y_data=us_trend['list'][0]['data'][:314]
jp_y_data=jp_trend['list'][0]['data'][:314]
in_y_data=in_trend['list'][0]['data'][:314]

# 生成图表
line=Line()

line.add_xaxis(us_x_data) # x轴数据共用
line.add_yaxis("美国确诊人数",us_y_data)
line.add_yaxis("日本确诊人数",jp_y_data)
line.add_yaxis("印度确诊人数",in_y_data)

# 设置标题,注意标题一定在全局属性中设置
line.set_global_opts(
    title_opts=TitleOpts(title='2022年美日印新冠疫情确诊人数对比图',pos_left='center',pos_bottom='1%' 
))


# 查看图像
line.render()

# 关闭文件
f_us.close()
f_jp.close()
f_in.close()

运行代码得到下图 。

我们可以看到当前图线的数字太多不太美观,通过设置系列属性来去掉混合数字,ctrl+p查看所有功能找到label_opts。

# 修改y轴数据代码
line.add_yaxis("美国确诊人数",us_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis("日本确诊人数",jp_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊人数",in_y_data,label_opts=LabelOpts(is_show=False))

可以看到数字消失了,图表清爽了很多。 

  以上内容仅是对 JSON 数据格式转化以及 Pyecharts 库使用的简单演示。希望这样的分享能给您带来帮助,也期待能获得您的投币点赞支持,感谢!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中可以使用matplotlib和pandas模块来实现数据可视化折线图折线图常用于展示时间序列数据的趋势。在matplotlib模块中,可以使用plot方法来绘制折线图。当然,也可以使用pandas模块的plot方法来绘制折线图。 下面是使用pandas模块绘制折线图的具体代码示例: ```python import pandas as pd import matplotlib.pyplot as plt # 设置绘图风格 plt.style.use('ggplot') # 处理中文乱码 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 读取数据 data = pd.read_excel(r'weather.xlsx') # 统计每月的平均最高气温 data = data.pivot_table(index='month', columns='year', values='high') # 绘制折线图 data.plot(kind='line', style=['-', '--', ':']) # 修改坐标轴标签 plt.xlabel('月份') plt.ylabel('气温') # 添加图形标题 plt.title('每月平均最高气温波动趋势') # 显示图形 plt.show() ``` 通过以上代码,可以绘制出每月平均最高气温的折线图,其中每年的数据使用不同的线条样式进行区分。这样可以更直观地展示出数据的变化趋势。 更多关于使用matplotlib模块绘制折线图的详细信息,可以参考Matplotlib的官方文档。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python数据可视化的例子——折线图(line)](https://blog.csdn.net/weixin_48615832/article/details/108466201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [001 Python数据可视化折线图](https://blog.csdn.net/qixinxiangshicheng/article/details/129480075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zik----

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

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

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

打赏作者

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

抵扣说明:

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

余额充值