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

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

相关推荐
winfredzhang11 分钟前
如何使用 python 中的 Pillow 创建可自定义的图标生成器
python·pillow·图标·png
qq_2739002337 分钟前
pytorch detach方法介绍
人工智能·pytorch·python
虞书欣的61 小时前
Python小游戏24——小恐龙躲避游戏
开发语言·python·游戏·小程序·pygame
FHYAAAX1 小时前
【机器学习】任务十:从函数分析到机器学习应用与BP神经网络
开发语言·python
PyAIGCMaster1 小时前
python环境中,敏感数据的存储与读取问题解决方案
服务器·前端·python
何曾参静谧2 小时前
「Py」模块篇 之 PyAutoGUI库自动化图形用户界面库
运维·python·自动化
pumpkin845142 小时前
客户端发送http请求进行流量控制
python·网络协议·http
smj2302_796826522 小时前
用枚举算法解决LeetCode第3348题最小可整除数位乘积II
python·算法·leetcode
hummhumm2 小时前
第 12 章 - Go语言 方法
java·开发语言·javascript·后端·python·sql·golang
hummhumm2 小时前
第 8 章 - Go语言 数组与切片
java·开发语言·javascript·python·sql·golang·database