Python绘制折线图之可视化神器pyecharts(二)

目录

叙接上文

折线图模板系列

自定义标签数据折线图

一天用电量折线图(特定场景)

断点折线图(根据场景进行配置)

双折线图显示最低最高数据标签(不显示其他数据标签)

双折线图显示平均刻度数据标签(数据可显示)

断点折线图(显示数据项)

面积折线图(不紧贴)

3D旋转弹簧图

每文一语


叙接上文

本期文章几乎就可以把折线图的案例介绍完了,相信有很多的小伙伴看了如此多个案例之后肯定有所发现,每一个案例都对应着每一个配置,如果是官方配置文档,说实话看起来真的很难,这样通过案例实现来解决各种参数的配置,我觉得有一定的参考价值和学习意义,正所谓“磨刀不误砍工”,如何把可视化做的炉火纯青,任重而道远也!

一下图形我根据应用场景更改,改善了许多,欢迎支持,订阅!

说明:有些数据是调用相关库资源:from pyecharts.faker import Faker,需要自己添加数据,非常简单,这个不用担心。

你觉得上述图形用的上吗,我估计在平时的小场景可能用不到,但是做股票好像不错哟!

折线图模板系列

自定义标签数据折线图

有时候我们不想要把所有的数据标签都显示出来,因为这样太繁杂了,数据可视化的原则就是在炫酷的同时把图表准确的呈现在用户的面前,这就需要我们按照特定的场景选择特定的图形。

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType

x, y = Faker.choose(), Faker.values()#更改数据集即可
c = (
    Line({"theme":ThemeType.MACARONS})#不添加默认红色
        .add_xaxis(x)
        .add_yaxis(
        "商家A",
        y,
        markpoint_opts=opts.MarkPointOpts(
            data=[opts.MarkPointItem(name="自定义标记点", coord=[x[2], y[2]], value=y[2])]  # 这里定义要显示的标签数据
        ),
    )
        .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
                         xaxis_opts=opts.AxisOpts(
                             name='类别',
                             name_location='middle',
                             name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16  # 标签字体大小
                             )),
                         yaxis_opts=opts.AxisOpts(
                             name='数量',
                             name_location='middle',
                             name_gap=30,
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16
                                 # font_weight='bolder',
                             )),
                         # toolbox_opts=opts.ToolboxOpts()  # 工具选项
                         )
        .render("自定义标签.html")
)

 

一天用电量折线图(特定场景)

此模板可以作为一天用电量的应用,也可以在此基础上进行更改,形成其他类别的折线图,只是提供模板,你可以根据自己的应用场景来解决问题。

import pyecharts.options as opts
from pyecharts.charts import Line

x_data = [
    "00:00",
    "01:15",
    "02:30",
    "03:45",
    "05:00",
    "06:15",
    "07:30",
    "08:45",
    "10:00",
    "11:15",
    "12:30",
    "13:45",
    "15:00",
    "16:15",
    "17:30",
    "18:45",
    "20:00",
    "21:15",
    "22:30",
    "23:45",
]
y_data = [
    300,
    280,
    250,
    260,
    270,
    300,
    550,
    500,
    400,
    390,
    380,
    390,
    400,
    500,
    600,
    750,
    800,
    700,
    600,
    400,
]

(
    Line(init_opts=opts.InitOpts(width="1200px", height="600px"))
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="用电量",
        y_axis=y_data,
        is_smooth=True,
        label_opts=opts.LabelOpts(is_show=False),
        linestyle_opts=opts.LineStyleOpts(width=2),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="一天用电量分布", subtitle="纯属虚构"),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
        xaxis_opts=opts.AxisOpts(boundary_gap=False),
        yaxis_opts=opts.AxisOpts(
            axislabel_opts=opts.LabelOpts(formatter="{value} W"),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
        visualmap_opts=opts.VisualMapOpts(
            is_piecewise=True,
            dimension=0,
            pieces=[
                {"lte": 6, "color": "green"},
                {"gt": 6, "lte": 8, "color": "red"},
                {"gt": 8, "lte": 14, "color": "green"},
                {"gt": 14, "lte": 17, "color": "red"},
                {"gt": 17, "color": "green"},
            ],
        ),
    )
    .set_series_opts(
        markarea_opts=opts.MarkAreaOpts(
            data=[
                opts.MarkAreaItem(name="早高峰", x=("07:30", "10:00")),
                opts.MarkAreaItem(name="晚高峰", x=("17:30", "21:15")),
            ]
        )
    )
    .render("用电量折线图.html")
)

 

断点折线图(根据场景进行配置)

import pyecharts.options as opts
from pyecharts.charts import Line

(
    Line(init_opts=opts.InitOpts(width="1200px", height="600px"))
        .add_xaxis(xaxis_data=["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"])
        .add_yaxis(
        series_name="",
        y_axis=[120, 200, 150, 80, 70, 110, 130],
        symbol="triangle",
        symbol_size=20,
        linestyle_opts=opts.LineStyleOpts(color="green", width=4, type_="dashed"),
        label_opts=opts.LabelOpts(is_show=False),
        itemstyle_opts=opts.ItemStyleOpts(
            border_width=3, border_color="yellow", color="blue"
        ),
    )
        .set_global_opts(
        xaxis_opts=opts.AxisOpts(type_="category",
                                 name='类别',
                                 name_location='middle',
                                 name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                                 name_textstyle_opts=opts.TextStyleOpts(
                                     font_family='Times New Roman',
                                     font_size=16  # 标签字体大小
                                 )
                                 ),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
        tooltip_opts=opts.TooltipOpts(is_show=False),
    )
        .render("断点折线图.html")
)

 

双折线图显示最低最高数据标签(不显示其他数据标签)

有时候折线图里面的数据太多了,但是我们想要一眼就直观的看到数据的最低最高是多少,虽然pyecharts可以把鼠标放在点上就会显示,但是如果做出PPT或者图片,那么就有点不现实了。

 

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
    Line()
        .add_xaxis(Faker.choose())
        .add_yaxis(
        "商家A",
        Faker.values(),
        label_opts=opts.LabelOpts(is_show=False),
        markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min"),
                                                opts.MarkPointItem(type_="max")]),

    )
        .add_yaxis(
        "商家B",
        Faker.values(),
        label_opts=opts.LabelOpts(is_show=False),
        markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min"),
                                                opts.MarkPointItem(type_="max")]),
    )
        .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
                         xaxis_opts=opts.AxisOpts(
                             name='类别',
                             name_location='middle',
                             name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16  # 标签字体大小
                             )),
                         yaxis_opts=opts.AxisOpts(
                             name='数量',
                             name_location='middle',
                             name_gap=30,
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16
                                 # font_weight='bolder',
                             )),
                         # toolbox_opts=opts.ToolboxOpts()  # 工具选项
                         )
        .render("双折线图显示最低最高.html")
)

 

双折线图显示平均刻度数据标签(数据可显示)

这个双折线图可以运用在我们需要知道一类数据集里面的平均值是多少,那么我们就可以根据这个来配置相关参数了,下面的图例我们没有显示数据,也可以显示数据。

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
    Line()
        .add_xaxis(Faker.choose())
        .add_yaxis(
        "商家A",
        Faker.values(),
        label_opts=opts.LabelOpts(is_show=False),#允许显示数据
        markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
    )
        .add_yaxis(
        "商家B",
        Faker.values(),
        label_opts=opts.LabelOpts(is_show=False),
        markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
    )
        .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
                         xaxis_opts=opts.AxisOpts(
                             name='类别',
                             name_location='middle',
                             name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16  # 标签字体大小
                             )),
                         yaxis_opts=opts.AxisOpts(
                             name='数量',
                             name_location='middle',
                             name_gap=30,
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16
                                 # font_weight='bolder',
                             )),
                         # toolbox_opts=opts.ToolboxOpts()  # 工具选项
                         )
        .render("双折线图显示平均刻度.html")
)

 

断点折线图(显示数据项)

前面的图例里面,没有对数据进行展示,也没有数据标签,这个图例是对之前的进行改造和设计升级的。

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
    Line()
    .add_xaxis(xaxis_data=Faker.choose())
    .add_yaxis(
        "商家A",
        Faker.values(),
        symbol="triangle",
        symbol_size=20,
        linestyle_opts=opts.LineStyleOpts(color="green", width=4, type_="dashed"),
        itemstyle_opts=opts.ItemStyleOpts(
            border_width=3, border_color="yellow", color="blue"
        ),#可进行多维叠加
    )
        .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
                         xaxis_opts=opts.AxisOpts(
                             name='类别',
                             name_location='middle',
                             name_gap=30,  # 标签与轴线之间的距离,默认为20,最好不要设置20
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16  # 标签字体大小
                             )),
                         yaxis_opts=opts.AxisOpts(
                             name='数量',
                             name_location='middle',
                             name_gap=30,
                             name_textstyle_opts=opts.TextStyleOpts(
                                 font_family='Times New Roman',
                                 font_size=16
                                 # font_weight='bolder',
                             )),
                         # toolbox_opts=opts.ToolboxOpts()  # 工具选项
                         )
    .render("断点显示数据.html")
)

 

面积折线图(不紧贴)

前面有一个图形是一个曲线的折线图,紧贴Y轴,此图例是不紧贴的且是折线的形式。

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values(), areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
    .add_yaxis("商家B", Faker.values(), areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
    .set_global_opts(title_opts=opts.TitleOpts(title="标题"))
    .render("面积折线图不紧贴.html")
)

3D旋转弹簧图

运行生成之后,自动旋转。有的小伙伴很是好奇,为什么会有这种炫酷的图形,这种图形是如何设计出来的,看了代码我们发现其实并不难,代码量也不是很复杂,原因就是它基于算法数学设计的,这也就是为什么说有“几何之美”的这一概念了。

每文一语

多读书一定没有错,书读多了你就会发现:余生最好的安排就是一切自有安排......

  • 12
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
div css表单布局的五个小技巧可以帮助你更灵活的控制表单,使页面更加满意。   1、表单文本输入的移动选择:   在文本输入栏中,如果加入了提示,来访者往往要用鼠标选取后删除,再输入有用的信息。其实只要加入onMouseOver="this.focus()" onFocus="this.select()" 代码到 <textarea> 中,一切就会变得简单多了,如: Example Source Code [www.52css.com] <textarea name=textarea wrap=virtual rows=2 cols=22 onMouseOver="this.focus()" onFocus="this.select()">Input English..</textarea>   类似的,可以加入代码到<input>。   2、表单输入单元点击删除:   本列同上则作用类似,只是使用鼠标上略有变化,需要点击而不像上则的只要鼠标覆盖。如: Example Source Code [www.52css.com] <input type=text name="address" size=19 value="Enter,e-mail..."onFocus="this.value=''">   点击输入单元后,提示信息会删除,是不是很方便。   3、表单输入单元的边框设置:   更改传统的表单单元边框,会让你的主页生色不少。如: Example Source Code [www.52css.com] <input type=radio name=action value=subscribe checked style="BORDER-BOTTOM: dashed 1px; BORDER-LEFT: dashed 1px; BORDER-RIGHT: dashed 1px; BORDER-TOP: dashed 1px;background-color: #FEF5C8">   其中"style=***"为左右上下和背景色设置,适用于其它单元,请读者亲自试试。   4、表单输入单元的文字设置:   表单中单元的字体是可以修改的,如: Example Source Code [www.52css.com] <input type=text name="address" size=19 value="Enter,e-mail..." style=font-family:"verdana";font-size:10px >   其中"style=***"为字体和字大小设置。   5、修改表单属性为弹出窗口:   大多数表单激活后,会在当前页面中打开,影响正常浏览。不如修改一下,如: Example Source Code [www.52css.com] <form method=POST action=url target=_blank>   其中"target=_blank"为控制在弹出窗口打开。
Pyecharts 是一个基于Python的可交互式数据可视化库,支持多种图表类型,包括折线图、柱状图、散点图、地图等。其中,折线图是一种常用的数据可视化方式,可以展示数据的趋势变化,比如时间序列数据、股票走势等。 下面介绍如何使用 Pyecharts 绘制可交互式折线图。 1. 安装 Pyecharts 使用 pip 安装 Pyecharts,命令如下: ``` pip install pyecharts ``` 2. 导入模块 导入 Line 类和 Page 类,代码如下: ``` from pyecharts.charts import Line from pyecharts import options as opts from pyecharts.globals import ThemeType from pyecharts.charts import Page ``` 3. 准备数据 准备一些数据,代码如下: ``` x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] y_data = [820, 932, 901, 934, 1290, 1330, 1320] ``` 4. 创建图表 创建 Line 对象,并设置主题、标题、x 轴数据、y 轴数据,代码如下: ``` line = ( Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .set_global_opts(title_opts=opts.TitleOpts(title="折线图示例")) .add_xaxis(xaxis_data=x_data) .add_yaxis(series_name="", y_axis=y_data) ) ``` 其中,add_xaxis() 方法用于设置 x 轴数据,add_yaxis() 方法用于设置 y 轴数据。 5. 渲染图表 调用 render() 方法,将图表渲染为 HTML 文件,代码如下: ``` line.render("折线图.html") ``` 6. 多图展示 如果需要展示多个图表,可以使用 Page 类,将多个图表组合在一起,代码如下: ``` page = Page(layout=Page.SimplePageLayout) page.add(line) page.render("多图展示.html") ``` 在浏览器中打开生成的 HTML 文件,即可查看可交互式折线图。 完整代码如下: ``` from pyecharts.charts import Line from pyecharts import options as opts from pyecharts.globals import ThemeType from pyecharts.charts import Page x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] y_data = [820, 932, 901, 934, 1290, 1330, 1320] line = ( Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .set_global_opts(title_opts=opts.TitleOpts(title="折线图示例")) .add_xaxis(xaxis_data=x_data) .add_yaxis(series_name="", y_axis=y_data) ) page = Page(layout=Page.SimplePageLayout) page.add(line) page.render("多图展示.html") ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王小王-123

您觉得舒心就点一点吧~~~

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值