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轴上去,最后生成图表即可。

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

相关推荐
belldeep23 分钟前
python:reportlab 将多个图片合并成一个PDF文件
python·pdf·reportlab
FreakStudio3 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
丶21363 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
_.Switch4 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一个闪现必杀技4 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
小鹿( ﹡ˆoˆ﹡ )4 小时前
探索IP协议的神秘面纱:Python中的网络通信
python·tcp/ip·php
卷心菜小温5 小时前
【BUG】P-tuningv2微调ChatGLM2-6B时所踩的坑
python·深度学习·语言模型·nlp·bug
陈苏同学5 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
唐家小妹5 小时前
介绍一款开源的 Modern GUI PySide6 / PyQt6的使用
python·pyqt
羊小猪~~6 小时前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm