可视化神器Plotly(2)---折线图

一、导入包

# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import plotly.offline as py                    #保存图表,相当于plotly.plotly as py,同时增加了离线功能
py.init_notebook_mode(connected=True)          #离线绘图时,需要额外进行初始化
import plotly.graph_objs as go                 #创建各类图表
import plotly.figure_factory as ff             #创建table

二、参数说明

  1. 本文用到的部分参数说明如下,仅供参考,具体见官方文档

  2. 当只有1条数据时,默认不展示图例,即便是设置了name值;

  3. showlegend(boolean) : 默认值True,只有1条数据时,需要设置为True后才能显示 name;

  4. mode : 设置图表类型,可以设置:lines、markers、两者相加;

  5. name : 设置图例项目名称,并在悬停时显示;

  6. line : 设置折线类型,包括:color、width、shape、smoothing(平滑线)、dash(线条样式)、simplify(简化线条);

  7. layout : 设置图表布局。title设置图表标题、xaxis和yaxis设置坐标轴标题、width和height设置图表的宽和高;

  8. 图例命名时,可以通过html标签加粗、添加空格等操作;

  9. connectgaps:设置数据为空(即{nan}或缺失值)时,图表是否连接,默认为Fasle;

  10. hoverinfo : 悬停时显示的跟踪信息,任何组合"x", "y", "z", "text", "name" ;

  11. line. shape : 设置线条形状,enumerated : "linear" | "spline" | "hv" | "vh" | "hvh" | "vhv" ;

  12. text : 关联的文本元素。单个字符串时,则在所有数据点上显示相同的字符串;字符串数组时,则跟踪(x,y)坐标元素而映射;

  13. font : 设置悬停标签中使用的字体。family(HTML字体系列)、size、color等;

  14. layout.legend : 设置图例布局
    bgcolor:设置图例背景颜色
    bordercolor:设置图例边框颜色
    borderwidth:设置图例的边框的宽度
    front:设置图例文本设置
    orientation:设置图例方向
    x : 设置图例的x位置,范围:-2~3,y轴相同
    traceorder:设置图例显示顺序, 包括:"reversed","grouped","reversed+grouped","normal"

三、简单折线图

  • 代码
trace = go.Scatter(
     x = np.linspace(0, 1, 5),
     y = np.random.randn(5),
     showlegend=True
)
data = [trace]

py.iplot(data)
  • 效果

四、多线图模式

  • 代码
trace0 = go.Scatter(
      x = np.linspace(0, 1, 100),
      y = np.random.randn(100) + 5,
      mode = 'lines',
      name = 'line'   
)
trace1 = go.Scatter(
      x = np.linspace(0, 1, 100),
      y = np.random.randn(100),
      mode = 'lines + markers',
      name = 'line + marker'   
)
trace2 = go.Scatter(
      x = np.linspace(0, 1, 100),
      y = np.random.randn(100) - 5,
      mode = 'markers',
      name = 'marker'   
)
data = [trace0, trace1, trace2]

py.iplot(data)
  • 效果

五、风格线图

  • 代码
month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 
         'October', 'November', 'December']
high_2007 = [32.5, 37.6, 49.9, 53.0, 69.1, 75.4, 76.5, 76.6, 70.7, 60.6, 45.1, 29.3]
low_2007 = [13.8, 22.3, 32.5, 37.2, 49.9, 56.1, 57.7, 58.3, 51.2, 42.8, 31.6, 15.9]
high_2014 = [36.5, 26.6, 43.6, 52.3, 71.5, 81.4, 80.5, 82.2, 76.0, 67.3, 46.1, 35.0]
low_2014 = [23.6, 14.0, 27.0, 36.8, 47.6, 57.7, 58.9, 61.2, 53.3, 48.5, 31.0, 23.6]
high_2018 = [28.8, 28.5, 37.0, 56.8, 69.7, 79.7, 78.5, 77.8, 74.1, 62.6, 45.3, 39.9]
low_2018 = [12.7, 14.3, 18.6, 35.5, 49.9, 58.0, 60.0, 58.6, 51.7, 45.2, 32.2, 29.1]

trace0 = go.Scatter(
    x = month,
    y = high_2018,
    name = 'High 2018',
    line = dict(color = ('rgb(205, 12, 24)'), width = 4)
)
trace1 = go.Scatter(
     x = month,
     y = low_2018,
     name = 'Low 2018',
    line = dict(color = ('rgb(22, 96, 167)'), width = 4)
)
trace2 = go.Scatter(
     x = month,
     y = high_2014,
     name = 'High 2014',
     line = dict(color = ('rgb(205, 12, 24)'), width = 4, dash = 'dash') 
)
trace3 = go.Scatter(
     x = month,
     y = low_2014,
     name = 'Low 2014',
     line = dict(color = ('rgb(22, 96, 167)'), width = 4, dash = 'dash')
)
trace4 = go.Scatter(
     x = month,
     y = high_2007,
     name = 'High 2007',
     line = dict(color = ('rgb(205, 12, 24)'), width = 4, dash = 'dot')
)
trace5 = go.Scatter(
     x = month,
     y = low_2007,
     name = 'Low 2007',
     line = dict(color = ('rgb(22, 96, 167)'), width = 4, dash = 'dot')
)
data = [trace0, trace1, trace2, trace3, trace4, trace5]

layout = dict(title = '北京最高和最低的气温', xaxis = dict(title = '月份'), yaxis = dict(title = '气温 (°C)'))
fig = dict(data=data, layout=layout)
py.iplot(fig, filename='styled-line')
  • 效果

六、可间断折线图

  • 代码
trace0 = go.Scatter(
     x = [1, 2, 3, 4, 5, 
          6, 7, 8, 9, 10,
          11, 12, 13, 14, 15],
     y = [10, 20, None, 15, 10,
          5, 15, None, 20, 10,
          10, 15, 25, 20, 10],
    name = '<b>No</b> Gaps',          # Style name/legend entry with html tags
    connectgaps=True
) 
trace1 = go.Scatter(
     x = [1, 2, 3, 4, 5,
       6, 7, 8, 9, 10,
       11, 12, 13, 14, 15],
     y = [5, 15, None, 10, 5,
       0, 10, None, 15, 5,
       5, 10, 20, 15, 5],
     name = 'Gaps'
)
data = [trace0, trace1]

py.iplot(data)
  • 效果

七、线图插值

  • 代码
trace1 = go.Scatter(
     x = [1, 2, 3, 4, 5],
     y = [1, 3, 2, 3, 1],
     mode='lines+markers',
     name="'linear'",
     hoverinfo='name',
     line=dict(shape='linear')
)
trace2 = go.Scatter(
     x = [1, 2, 3, 4, 5],
     y = [6, 8, 7, 8, 6],
     mode='lines+markers',
     name="'spline'",
     text=["tweak", "line", "smoothness<br>with", "smoothing", "in line object"],
     hoverinfo='text+name',
     line=dict(shape='spline')
)
trace3 = go.Scatter(
     x = [1, 2, 3, 4, 5],
     y = [11, 13, 12, 13, 11],
     mode='lines+markers',
     name="'vhv'",
     hoverinfo='name',
     line=dict(shape='vhv')
)
trace4 = go.Scatter(
     x = [1, 2, 3, 4, 5],
     y = [16, 18, 17, 18, 16],
     mode='lines+markers',
     name="'hvh'",
     hoverinfo='name',
     line=dict(shape='hvh')
)
trace5 = go.Scatter(
     x = [1, 2, 3, 4, 5],
     y = [21, 23, 22, 23, 21],
     mode='lines+markers',
     name="'vh'",
     hoverinfo='name',
     line=dict(shape='vh')
)
trace6 = go.Scatter(
     x = [1, 2, 3, 4, 5],
     y = [26, 28, 27, 28, 26],
     mode='lines+markers',
     name="'hv'",
     hoverinfo='name',
     line=dict(shape='hv')
)
data = [trace1, trace2, trace3, trace4, trace5, trace6]

layout = dict(legend = dict(y=0.5, traceorder='reversed', font=dict(size=16)))
fig = dict(data=data, layout=layout)
py.iplot(fig, filename='line-shapes')
  • 效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容