资讯专栏INFORMATION COLUMN

Python绘制折线图可视化神器pyecharts案例

89542767 / 924人阅读

  小编写这篇文章的主要目的,主要是用来进行绘制折线图,在绘制的时候,用到的是Python这门语言,主要应用到的技能是Python pyecharts,利用它去进行绘制折线图,下面小编就以案例的形式,去给大家详细的做个介绍。


  前言


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


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

01.png

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


  折线图模板系列


  自定义标签数据折线图


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


</>复制代码

  1.   import pyecharts.options as opts
  2.   from pyecharts.charts import Line
  3.   from pyecharts.faker import Faker
  4.   from pyecharts.globals import ThemeType
  5.   x,y=Faker.choose(),Faker.values()#更改数据集即可
  6.   c=(
  7.   Line({"theme":ThemeType.MACARONS})#不添加默认红色
  8.   .add_xaxis(x)
  9.   .add_yaxis(
  10.   "商家A",
  11.   y,
  12.   markpoint_opts=opts.MarkPointOpts(
  13.   data=[opts.MarkPointItem(name="自定义标记点",coord=[x[2],y[2]],value=y[2])]#这里定义要显示的标签数据
  14.   ),
  15.   )
  16.   .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
  17.   xaxis_opts=opts.AxisOpts(
  18.   name='类别',
  19.   name_location='middle',
  20.   name_gap=30,#标签与轴线之间的距离,默认为20,最好不要设置20
  21.   name_textstyle_opts=opts.TextStyleOpts(
  22.   font_family='Times New Roman',
  23.   font_size=16#标签字体大小
  24.   )),
  25.   yaxis_opts=opts.AxisOpts(
  26.   name='数量',
  27.   name_location='middle',
  28.   name_gap=30,
  29.   name_textstyle_opts=opts.TextStyleOpts(
  30.   font_family='Times New Roman',
  31.   font_size=16
  32.   #font_weight='bolder',
  33.   )),
  34.   #toolbox_opts=opts.ToolboxOpts()#工具选项
  35.   )
  36.   .render("自定义标签.html")
  37.   )

02.png

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


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


</>复制代码

  1.   import pyecharts.options as opts
  2.   from pyecharts.charts import Line
  3.   x_data=[
  4.   "00:00",
  5.   "01:15",
  6.   "02:30",
  7.   "03:45",
  8.   "05:00",
  9.   "06:15",
  10.   "07:30",
  11.   "08:45",
  12.   "10:00",
  13.   "11:15",
  14.   "12:30",
  15.   "13:45",
  16.   "15:00",
  17.   "16:15",
  18.   "17:30",
  19.   "18:45",
  20.   "20:00",
  21.   "21:15",
  22.   "22:30",
  23.   "23:45",
  24.   ]
  25.   y_data=[
  26.   300,
  27.   280,
  28.   250,
  29.   260,
  30.   270,
  31.   300,
  32.   550,
  33.   500,
  34.   400,
  35.   390,
  36.   380,
  37.   390,
  38.   400,
  39.   500,
  40.   600,
  41.   750,
  42.   800,
  43.   700,
  44.   600,
  45.   400,
  46.   ]
  47.   (
  48.   Line(init_opts=opts.InitOpts(width="1200px",height="600px"))
  49.   .add_xaxis(xaxis_data=x_data)
  50.   .add_yaxis(
  51.   series_name="用电量",
  52.   y_axis=y_data,
  53.   is_smooth=True,
  54.   label_opts=opts.LabelOpts(is_show=False),
  55.   linestyle_opts=opts.LineStyleOpts(width=2),
  56.   )
  57.   .set_global_opts(
  58.   title_opts=opts.TitleOpts(title="一天用电量分布",subtitle="纯属虚构"),
  59.   tooltip_opts=opts.TooltipOpts(trigger="axis",axis_pointer_type="cross"),
  60.   xaxis_opts=opts.AxisOpts(boundary_gap=False),
  61.   yaxis_opts=opts.AxisOpts(
  62.   axislabel_opts=opts.LabelOpts(formatter="{value}W"),
  63.   splitline_opts=opts.SplitLineOpts(is_show=True),
  64.   ),
  65.   visualmap_opts=opts.VisualMapOpts(
  66.   is_piecewise=True,
  67.   dimension=0,
  68.   pieces=[
  69.   {"lte":6,"color":"green"},
  70.   {"gt":6,"lte":8,"color":"red"},
  71.   {"gt":8,"lte":14,"color":"green"},
  72.   {"gt":14,"lte":17,"color":"red"},
  73.   {"gt":17,"color":"green"},
  74.   ],
  75.   ),
  76.   )
  77.   .set_series_opts(
  78.   markarea_opts=opts.MarkAreaOpts(
  79.   data=[
  80.   opts.MarkAreaItem(name="早高峰",x=("07:30","10:00")),
  81.   opts.MarkAreaItem(name="晚高峰",x=("17:30","21:15")),
  82.   ]
  83.   )
  84.   )
  85.   .render("用电量折线图.html")
  86.   )
  87.   断点折线图(根据场景进行配置)
  88.   import pyecharts.options as opts
  89.   from pyecharts.charts import Line
  90.   (
  91.   Line(init_opts=opts.InitOpts(width="1200px",height="600px"))
  92.   .add_xaxis(xaxis_data=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
  93.   .add_yaxis(
  94.   series_name="",
  95.   y_axis=[120,200,150,80,70,110,130],
  96.   symbol="triangle",
  97.   symbol_size=20,
  98.   linestyle_opts=opts.LineStyleOpts(color="green",width=4,type_="dashed"),
  99.   label_opts=opts.LabelOpts(is_show=False),
  100.   itemstyle_opts=opts.ItemStyleOpts(
  101.   border_width=3,border_color="yellow",color="blue"
  102.   ),
  103.   )
  104.   .set_global_opts(
  105.   xaxis_opts=opts.AxisOpts(type_="category",
  106.   name='类别',
  107.   name_location='middle',
  108.   name_gap=30,#标签与轴线之间的距离,默认为20,最好不要设置20
  109.   name_textstyle_opts=opts.TextStyleOpts(
  110.   font_family='Times New Roman',
  111.   font_size=16#标签字体大小
  112.   )
  113.   ),
  114.   yaxis_opts=opts.AxisOpts(
  115.   type_="value",
  116.   axistick_opts=opts.AxisTickOpts(is_show=True),
  117.   splitline_opts=opts.SplitLineOpts(is_show=True),
  118.   ),
  119.   tooltip_opts=opts.TooltipOpts(is_show=False),
  120.   )
  121.   .render("断点折线图.html")
  122.   )

03.png

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


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


</>复制代码

  1.   import pyecharts.options as opts
  2.   from pyecharts.charts import Line
  3.   from pyecharts.faker import Faker
  4.   c=(
  5.   Line()
  6.   .add_xaxis(Faker.choose())
  7.   .add_yaxis(
  8.   "商家A",
  9.   Faker.values(),
  10.   label_opts=opts.LabelOpts(is_show=False),
  11.   markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min"),
  12.   opts.MarkPointItem(type_="max")]),
  13.   )
  14.   .add_yaxis(
  15.   "商家B",
  16.   Faker.values(),
  17.   label_opts=opts.LabelOpts(is_show=False),
  18.   markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min"),
  19.   opts.MarkPointItem(type_="max")]),
  20.   )
  21.   .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
  22.   xaxis_opts=opts.AxisOpts(
  23.   name='类别',
  24.   name_location='middle',
  25.   name_gap=30,#标签与轴线之间的距离,默认为20,最好不要设置20
  26.   name_textstyle_opts=opts.TextStyleOpts(
  27.   font_family='Times New Roman',
  28.   font_size=16#标签字体大小
  29.   )),
  30.   yaxis_opts=opts.AxisOpts(
  31.   name='数量',
  32.   name_location='middle',
  33.   name_gap=30,
  34.   name_textstyle_opts=opts.TextStyleOpts(
  35.   font_family='Times New Roman',
  36.   font_size=16
  37.   #font_weight='bolder',
  38.   )),
  39.   #toolbox_opts=opts.ToolboxOpts()#工具选项
  40.   )
  41.   .render("双折线图显示最低最高.html")
  42.   )

  

04.png

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


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


</>复制代码

  1.   import pyecharts.options as opts
  2.   from pyecharts.charts import Line
  3.   from pyecharts.faker import Faker
  4.   c=(
  5.   Line()
  6.   .add_xaxis(Faker.choose())
  7.   .add_yaxis(
  8.   "商家A",
  9.   Faker.values(),
  10.   label_opts=opts.LabelOpts(is_show=False),#允许显示数据
  11.   markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
  12.   )
  13.   .add_yaxis(
  14.   "商家B",
  15.   Faker.values(),
  16.   label_opts=opts.LabelOpts(is_show=False),
  17.   markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
  18.   )
  19.   .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
  20.   xaxis_opts=opts.AxisOpts(
  21.   name='类别',
  22.   name_location='middle',
  23.   name_gap=30,#标签与轴线之间的距离,默认为20,最好不要设置20
  24.   name_textstyle_opts=opts.TextStyleOpts(
  25.   font_family='Times New Roman',
  26.   font_size=16#标签字体大小
  27.   )),
  28.   yaxis_opts=opts.AxisOpts(
  29.   name='数量',
  30.   name_location='middle',
  31.   name_gap=30,
  32.   name_textstyle_opts=opts.TextStyleOpts(
  33.   font_family='Times New Roman',
  34.   font_size=16
  35.   #font_weight='bolder',
  36.   )),
  37.   #toolbox_opts=opts.ToolboxOpts()#工具选项
  38.   )
  39.   .render("双折线图显示平均刻度.html")
  40.   )

  

05.png

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


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


</>复制代码

  1.   import pyecharts.options as opts
  2.   from pyecharts.charts import Line
  3.   from pyecharts.faker import Faker
  4.   c=(
  5.   Line()
  6.   .add_xaxis(xaxis_data=Faker.choose())
  7.   .add_yaxis(
  8.   "商家A",
  9.   Faker.values(),
  10.   symbol="triangle",
  11.   symbol_size=20,
  12.   linestyle_opts=opts.LineStyleOpts(color="green",width=4,type_="dashed"),
  13.   itemstyle_opts=opts.ItemStyleOpts(
  14.   border_width=3,border_color="yellow",color="blue"
  15.   ),#可进行多维叠加
  16.   )
  17.   .set_global_opts(title_opts=opts.TitleOpts(title="标题"),
  18.   xaxis_opts=opts.AxisOpts(
  19.   name='类别',
  20.   name_location='middle',
  21.   name_gap=30,#标签与轴线之间的距离,默认为20,最好不要设置20
  22.   name_textstyle_opts=opts.TextStyleOpts(
  23.   font_family='Times New Roman',
  24.   font_size=16#标签字体大小
  25.   )),
  26.   yaxis_opts=opts.AxisOpts(
  27.   name='数量',
  28.   name_location='middle',
  29.   name_gap=30,
  30.   name_textstyle_opts=opts.TextStyleOpts(
  31.   font_family='Times New Roman',
  32.   font_size=16
  33.   #font_weight='bolder',
  34.   )),
  35.   #toolbox_opts=opts.ToolboxOpts()#工具选项
  36.   )
  37.   .render("断点显示数据.html")
  38.   )

  

06.png

      面积折线图(不紧贴)


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


</>复制代码

  1.   import pyecharts.options as opts
  2.   from pyecharts.charts import Line
  3.   from pyecharts.faker import Faker
  4.   c=(
  5.   Line()
  6.   .add_xaxis(Faker.choose())
  7.   .add_yaxis("商家A",Faker.values(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
  8.   .add_yaxis("商家B",Faker.values(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
  9.   .set_global_opts(title_opts=opts.TitleOpts(title="标题"))
  10.   .render("面积折线图不紧贴.html")
  11.   )

  3D旋转弹簧图

10.png

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


  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128348.html

相关文章

  • 怎么使用Python视化神器pyecharts绘制线图

      小编写这篇文章的主要目的,主要是给大家介绍一下关于Python中的一些案例情况,包括使用到一些可视化的工具pyecharts,那么,怎么使用这种工具去进行绘制折线图呢?下面就给大家详细解答下。  折线图介绍  折线图和柱状图一样是我们日常可视化最多的一个图例,当然它的优势和适用场景相信大家肯定不陌生,要想快速的得出趋势,抓住趋势二字,就会很快的想到要用折线图来表示了。折线图是通过直线将这些点按...

    89542767 评论0 收藏0
  • Python视化神器pyecharts绘制箱型图的方法

      小编写这篇文章的主要目的,主要是给大家做一个详细的介绍,介绍的内容是Python可视化神器,这个神器指的是pyecharts,那么,怎么样利用这种语言去进行绘制箱型图呢?下面小编就给大家详细解答下。  概念  后面的图形都是一些专业的统计图形,当然也会是我们可视化的对象。  箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。...

    89542767 评论0 收藏0
  • 北京全年天气状况分析

    摘要:对个月份进行抓取后再汇总,就得到了北京年全年的天气数据,包括最高温度最低温度天气状况风向等信息。按月查看温度走势日期天气状况分布天气状况晴天和多云是北京一年中主要的天气。北京的降水天数不多,主要在月份。 本文来自 @范洺源 投稿,在其基础上做了点修改 最近在学爬虫和数据分析,看到 天气网 上有国内城市一年的天气历史数据,想以此为数据源练习一下,于是就有了这个项目。今天在此简单介绍一下实...

    wupengyu 评论0 收藏0
  • Python pyecharts怎么绘制柱状图呢?下面给大家解答

      这篇文章介绍的主要内容是,利用Python pyecharts去绘制柱状图,涉及到内容知识点还是比较的多的,那么,具体需要怎么操作呢?下面就给大家以案例的形式,去做一个介绍,大家仔细的阅读下。  主题介绍  pyecharts里面有很多的主题可以供我们选择,我们可以根据自己的需要完成主题的配置,这样就告别了软件的限制,可以随意的发挥自己的艺术细胞了。  图表参数  '''...

    89542767 评论0 收藏0

发表评论

0条评论

89542767

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<