Python折线图
文章目录
- 1.数据可视化——折线图
- 1.1 json数据格式
- 1.2 Python数据和Json数据的相互转化
- 1.3 pyecharts模块
- 1.3.1 构建基础折线图
- 1.3.2 pyecharts配置选项
- 1.4 数据处理
- 1.5 创建折现图
1.数据可视化——折线图
1.1 json数据格式
是一种轻量级数据交互格式,可以按照JSON指定的格式组织和封装数据。
本质上是一个带有特定格式的字符串。
是不同语言之间的中转站。
1.2 Python数据和Json数据的相互转化
import jsondata = [{"name":"张大山","age":11},{"name":"王大锤","age":13},{"name":"赵啸虎","age":16}]
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
print(type(json_str))
- 通过json.dumps(data)方法将Python数据转化为json数据data = json.dumps(data)
若有中文,则可以带上ensure_ascii=False却把送中文正常转换。 - 通过json.loads(data)方法将json数据转化为python列表或字典。
1.3 pyecharts模块
官方网站:pyecharts.org
画廊官方网站:gallery.pyecharts.org
画廊网站有许多图表,可供使用者使用。
1.3.1 构建基础折线图
# 导包,导入Line功能构建折线图对象
from pyecharts.charts import Line# 得到折线图对象
line = Line()
# 添加x轴数据
line.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
line.add_yaxis("GDP",[30,20,10])
# 生成图表
line.render()
1.3.2 pyecharts配置选项
- 全局配置
通过set_global_opts方法配置。
# 导包,导入Line功能构建折线图对象
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts
# 得到折线图对象
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), # 工具包visualmap_opts = VisualMapOpts(is_show=True), # 视觉映射
)
# 生成图表
print(line.render())
1.4 数据处理
import json
f_us = open("F:/python LangChain/可视化案例数据/折线图数据/美国.txt","r",encoding="utf-8")
us_data = f_us.read()
us_data = us_data.replace("jsonp_1629344292311_69436(","")
us_data = us_data[:-2]
us_dict = json.loads(us_data)
trend = us_dict['data'][0]['trend']
x_data = trend['updateDate'][:314]
y_data = trend['list'][0]['data'][:314]
1.5 创建折现图
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts
from pyecharts.options import LabelOpts
#打开文件
f_us = open("F:/python LangChain/可视化案例数据/折线图数据/美国.txt","r",encoding="utf-8")
us_data = f_us.read()
f_jp = open("F:/python LangChain/可视化案例数据/折线图数据/日本.txt","r",encoding="utf-8")
jp_data = f_jp.read()
f_in = open("F:/python LangChain/可视化案例数据/折线图数据/印度.txt","r",encoding="utf-8")
in_data = f_in.read()# 去掉不合理开头
us_data = us_data.replace("jsonp_1629344292311_69436(","")
jp_data = jp_data.replace("jsonp_1629350871167_29498(","")
in_data = in_data.replace("jsonp_1629350745930_63180(","")# 去掉不合理结尾
us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]# JSON转字典
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轴,y轴数据
us_x_data = us_trend['updateDate'][:314]
us_y_data = us_trend['list'][0]['data'][:314]jp_x_data = jp_trend['updateDate'][:314]
jp_y_data = jp_trend['list'][0]['data'][:314]in_x_data = in_trend['updateDate'][:314]
in_y_data = in_trend['list'][0]['data'][:314]# 生成图表
line = Line()
# 添加x轴数据
line.add_xaxis(us_x_data) # x轴共用,使用一个国家即可
# 添加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))# 设置全局选项
line.set_global_opts(#标题设置title_opts =TitleOpts (title = "2020年美日印三国确诊人数折线图",pos_left = "center",pos_bottom = "1%"))
# 调用render方法,生成图表
line.render()# 关闭文件对象
f_us.close()
f_jp.close()
f_in.close()