Python 折线图的开发

在学习折线图之前我们先普及一下前置知识-json数据格式: JSON是一种轻量级的数据交互格式,可以按照JSON指定的格式去组织和封装数据。JSON在本质上是一个带有特定格式的字符串。它负责了不同编程语言中的数据传递和互交。JSON有什么用呢?JSON就是一种非常好的中转数据格式,它可以让不同的语言互相传递数据。 列如: 以上图片就给我们展示了Python语言和C语言通过JSON格式数据实现互相传递数据的。 json的格式数据转化:json格式的数据要求很严格的,如以下格式:

bash 复制代码
# json数据的格式可以是:
{"name":"admin","age":18}
# 也可以是:
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"hello","age":20}]

从上面的代码中我们可以看出json数据格式要么是字典要么是列表内嵌套了字典。说白了json它其实就是一个Python的列表或者是一个Python的字典,json就是把Python中的字典和列表转化为字符串。那么如何实现Python和json数据的相互转换呢?我们通过以下代码来展示:(使用Python内置的json模块中的json.dumps(data)和json.dumps(data)来实现数据的转化)

ini 复制代码
# 导入json模块
import json
# 准备符合格式json格式要求的Python数据
data = [{"name":"小白","age":16},{"name":"小蓝","age":15}]
# 通过json.dumps(data)把Python数据转化为了json数据
data = json.dumps(data,ensure_ascii=False)    #通过使用ensure_ascii参数并把它设置为False,表明不使用ASCII来去转换它进而显示data中的中文,而不是字符。
# 通过json.dumps(data)的方法把json数据转化为了python数据
data = json.loads(data)

接着是pyecharts模块:pyecharts模块是可以帮助我们做出数据可视化效果图的。Echar是个由百度开源的数据可视化,具有良好的互交性和精巧的图表设计;而Python是门富有表达力的的语言,很适合用于数据处理,当两者结合时pyecharts就出现了。因此可视化图表就是基于pyechars模块去构建的。pyechars是由百度团队所构建的,因此它具有很丰富的中文文档。它的官方网站是pyechars.org里面具有很多图标,然后打开一个网站(gallery.pyecharts.org/)这是pyechars...%25E8%25BF%2599%25E6%2598%25AFpyechars%25E6%2589%2580%25E4%25BD%25BF%25E7%2594%25A8%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E7%2594%25BB%25E5%25BB%258A%25EF%25BC%258C%25E5%259C%25A8%25E7%2594%25BB%25E5%25BB%258A%25E9%2587%258C%25E6%2588%2591%25E4%25BB%25AC%25E5%258F%25AF%25E4%25BB%25A5%25E6%2589%25BE%25E5%2588%25B0%25E5%2590%2584%25E7%25A7%258D%25E5%259B%25BE%25E8%25A1%25A8%25E5%25B9%25B6%25E6%259F%25A5%25E7%259C%258B%25E5%25AE%2583%25E4%25BB%25AC%25E7%259A%2584%25E5%25AE%259E%25E7%258E%25B0%25E4%25BB%25A3%25E7%25A0%2581%25E3%2580%2582%25E5%25A6%2582%25E4%25B8%258B%25E9%259D%25A2%25E7%259A%2584%25E6%258A%2598%25E7%25BA%25BF%25E5%259B%25BE%25E7%259A%2584%25E4%25BB%25A3%25E7%25A0%2581%25E5%2592%258C%25E5%259B%25BE%25EF%25BC%259A "https://gallery.pyecharts.org/)%E8%BF%99%E6%98%AFpyechars%E6%89%80%E4%BD%BF%E7%94%A8%E7%9A%84%E4%B8%80%E4%B8%AA%E7%94%BB%E5%BB%8A%EF%BC%8C%E5%9C%A8%E7%94%BB%E5%BB%8A%E9%87%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E6%89%BE%E5%88%B0%E5%90%84%E7%A7%8D%E5%9B%BE%E8%A1%A8%E5%B9%B6%E6%9F%A5%E7%9C%8B%E5%AE%83%E4%BB%AC%E7%9A%84%E5%AE%9E%E7%8E%B0%E4%BB%A3%E7%A0%81%E3%80%82%E5%A6%82%E4%B8%8B%E9%9D%A2%E7%9A%84%E6%8A%98%E7%BA%BF%E5%9B%BE%E7%9A%84%E4%BB%A3%E7%A0%81%E5%92%8C%E5%9B%BE%EF%BC%9A")

jsimport 复制代码
from pyecharts.charts import Line

"""
Gallery 使用 pyecharts 1.1.0
参考地址: https://echarts.apache.org/examples/editor.html?c=line-marker

目前无法实现的功能:

1、最低气温的最高值暂时无法和 Echarts 的示例完全复刻
"""

week_name_list = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
high_temperature = [11, 11, 15, 13, 12, 13, 10]
low_temperature = [1, -2, 2, 5, 3, 2, 0]


(
    Line()
    .add_xaxis(xaxis_data=week_name_list)
    .add_yaxis(
        series_name="最高气温",
        y_axis=high_temperature,
        markpoint_opts=opts.MarkPointOpts(
            data=[
                opts.MarkPointItem(type_="max", name="最大值"),
                opts.MarkPointItem(type_="min", name="最小值"),
            ]
        ),
        markline_opts=opts.MarkLineOpts(
            data=[opts.MarkLineItem(type_="average", name="平均值")]
        ),
    )
    .add_yaxis(
        series_name="最低气温",
        y_axis=low_temperature,
        markpoint_opts=opts.MarkPointOpts(
            data=[opts.MarkPointItem(value=-2, name="周最低", x=1, y=-1.5)]
        ),
        markline_opts=opts.MarkLineOpts(
            data=[
                opts.MarkLineItem(type_="average", name="平均值"),
                opts.MarkLineItem(symbol="none", x="90%", y="max"),
                opts.MarkLineItem(symbol="circle", type_="max", name="最高点"),
            ]
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="未来一周气温变化", subtitle="纯属虚构"),
        tooltip_opts=opts.TooltipOpts(trigger="axis"),
        toolbox_opts=opts.ToolboxOpts(is_show=True),
        xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
    )
    .render("temperature_change_line_chart.html")
)

那我们如何安装pyecharts包呢?可以打开windows找到命令提示符,然后通过pip命令(pip install pyecharts)安装好了之后输入Python进入到Python的解释器环境中输入import导入pyecharts模块,如果没有出现问题就可以使用pyechars第三方包了。

接下来是构造基础折线图:

js 复制代码
# 导包,导入line功能构建折线图对象
from pyecharts.charts import Line
# 得到折线图对象
line = Line()
# 添加x轴数据
line.add_yaxis(["中国","美国","英国"])
# 添加y轴数据
line.add_yaxis("GDP",[30,20,10])
# 生成图表
line.render()

从代码中我们可以知道要构建一个基础的折线图我们首先要导入包得到折线图对象然后在添加x和y轴的数据最后生成图表就可以了。 当我们运行的时候运行结果并没有出现图表,而是出现了一个文件(render.html),打开该文件点击右上角选择一个浏览器打开就能得到图表了。

pyecharts有很多的配置选项,常用的有两个:全局配置选项和系列配置选项。全局配置选项可以通过set_global_opts方法来配置,相应的选项和功能如下表:

下面通过代码来去简单的演示一下:

js# 复制代码
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.render()
# 设置全职配置项set_global_opts来设置
is_show=True
line.set_global_opts(
# 标题的配置(把标题"GDP展示"放在中间最下面距离是%1    
    title_opts=TitleOpts(title="GDP展示",pos_left="cente", pos_bottom="1%"),
    legend_opts=LegendOpts(is_show=True),   # 比例的显示
    toolbox_opts=ToolboxOpts(is_show=True),     # 工具包的配置
    visualmap_opts=VisualMapOpts(is_show=True),     # 视觉的配置
)
line.render()

结果图:

通过与上图对比我们可以发现新图表增加了标题,比列和工具。

接下来是数据的处理:我们是通过json模块去处理数据的。打开懒人工具网站找到json数据打开就可以查看数据了(数据以字典形式存在)。首先从文件中取出我们需要的数据,然后去掉不和json模范的开头和结尾,再把json数据转化为Python字典,接着把数据分别放到x和y轴上去,最后生成图表即可。

以上就是创建折线图的基本方法了。

相关推荐
Candice_jy19 分钟前
vscode运行ipynb文件:使用docker中的虚拟环境
服务器·ide·vscode·python·docker·容器·编辑器
流烟默43 分钟前
基于Optuna 贝叶斯优化的自动化XGBoost 超参数调优器
人工智能·python·机器学习·超参数优化
海琴烟Sunshine1 小时前
leetcode 263. 丑数 python
python·算法·leetcode
AI视觉网奇1 小时前
yolo 获取异常样本 yolo 异常
开发语言·python·yolo
程序员爱钓鱼1 小时前
Python编程实战 面向对象与进阶语法 迭代器与生成器
后端·python·ipython
程序员爱钓鱼1 小时前
Python编程实战 面向对象与进阶语法 JSON数据读写
后端·python·ipython
TH88862 小时前
一体化负氧离子监测站:实时、精准监测空气中负氧离子浓度及其他环境参数
python
苏打水com2 小时前
0基础学前端:100天拿offer实战课(第3天)—— CSS基础美化:给网页“精装修”的5大核心技巧
人工智能·python·tensorflow
顾安r2 小时前
11.5 脚本 本地网站收藏(解封归来)
linux·服务器·c语言·python·bash
Blossom.1183 小时前
把AI“贴”进路灯柱:1KB决策树让老旧路灯自己报「灯头松动」
java·人工智能·python·深度学习·算法·决策树·机器学习