• python plotly 使用教程


    1、plotly介绍

    lotly的Python图形库使互动的出版质量图表成为在线。 如何制作线图,散点图,面积图,条形图,误差线,箱形图,直方图,热图,子图,多轴,极坐标图和气泡图的示例。
    推荐最好使用jupyter notebook,使用pycharm的话不是很方便。

    2、安装

    pip install plotly

    2、使用

    1)在线使用

    在setting里找到用户名和api key


     
    image.png
    ##在线使用
    import plotly.plotly as py
    from plotly import tools
    from plotly.graph_objs import *
    tools.set_credentials_file(username='yours', api_key='yours')
    
    trace0 = Scatter(
        x=[1, 2, 3, 4],
        y=[10, 15, 13, 17],
        mode='markers'
    )
    trace1 = Scatter(
        x=[1, 2, 3, 4],
        y=[16, 5, 11, 9]
    )
    data = Data([trace0, trace1])
    
    py.iplot(data)
    

    散点图

     
    散点图.png

    2)offline

    import plotly.offline as of
    import plotly.graph_objs as go
    
    of.offline.init_notebook_mode(connected=True)
    trace0 = go.Scatter(
        x=[1, 2, 3, 4],
        y=[10, 15, 13, 17],
        mode='markers'
    )
    trace1 = go.Scatter(
        x=[1, 2, 3, 4],
        y=[16, 5, 11, 9]
    )
    data = go.Data([trace0, trace1])
    of.plot(data)
    

    3、其他图

    下面我们画几个其他类型的图

    柱状图

    import plotly.figure_factory as ff
    import pandas as pd
    
    df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/school_earnings.csv")
    
    data = [Bar(x=df.School,
                y=df.Gap)]
    
    py.iplot(data)
    
     
    image.png

    3D图

    
    import numpy as np
    
    s = np.linspace(0, 2 * np.pi, 240)
    t = np.linspace(0, np.pi, 240)
    tGrid, sGrid = np.meshgrid(s, t)
    
    r = 2 + np.sin(7 * sGrid + 5 * tGrid)  # r = 2 + sin(7s+5t)
    x = r * np.cos(sGrid) * np.sin(tGrid)  # x = r*cos(s)*sin(t)
    y = r * np.sin(sGrid) * np.sin(tGrid)  # y = r*sin(s)*sin(t)
    z = r * np.cos(tGrid)                  # z = r*cos(t)
    
    surface = Surface(x=x, y=y, z=z)
    data = Data([surface])
    
    layout = Layout(
        title='Parametric Plot',
        scene=Scene(
            xaxis=XAxis(
                gridcolor='rgb(255, 255, 255)',
                zerolinecolor='rgb(255, 255, 255)',
                showbackground=True,
                backgroundcolor='rgb(230, 230,230)'
            ),
            yaxis=YAxis(
                gridcolor='rgb(255, 255, 255)',
                zerolinecolor='rgb(255, 255, 255)',
                showbackground=True,
                backgroundcolor='rgb(230, 230,230)'
            ),
            zaxis=ZAxis(
                gridcolor='rgb(255, 255, 255)',
                zerolinecolor='rgb(255, 255, 255)',
                showbackground=True,
                backgroundcolor='rgb(230, 230,230)'
            )
        )
    )
    
    fig = Figure(data=data, layout=layout)
    py.iplot(fig,)
    
     
    image.png

    折线图

    import numpy as np
    
    N = 100
    random_x = np.linspace(0, 1, N)
    random_y0 = np.random.randn(N)+5
    random_y1 = np.random.randn(N)
    random_y2 = np.random.randn(N)-5
    
    # Create traces
    trace0 = go.Scatter(
        x = random_x,
        y = random_y0,
        mode = 'markers',
        name = 'markers'
    )
    trace1 = go.Scatter(
        x = random_x,
        y = random_y1,
        mode = 'lines+markers',
        name = 'lines+markers'
    )
    trace2 = go.Scatter(
        x = random_x,
        y = random_y2,
        mode = 'lines',
        name = 'lines'
    )
    
    data = [trace0, trace1, trace2]
    py.iplot(data)
    
     
    image.png

    堆叠图

    trace1 = go.Bar(
        x=['giraffes', 'orangutans', 'monkeys'],
        y=[20, 14, 23],
        name='SF Zoo'
    )
    trace2 = go.Bar(
        x=['giraffes', 'orangutans', 'monkeys'],
        y=[12, 18, 29],
        name='LA Zoo'
    )
    
    data = [trace1, trace2]
    layout = go.Layout(
        barmode='stack'
    )
    
    fig = go.Figure(data=data, layout=layout)
    py.iplot(fig)
    
     
    image.png

    pie

    labels = ['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen']
    values = [4500,2500,1053,500]
    colors = ['#FEBFB3', '#E1396C', '#96D38C', '#D0F9B1']
    
    trace = go.Pie(labels=labels, values=values,
                 hoverinfo='label+percent', textinfo='value', 
                 textfont=dict(size=20),
                 marker=dict(colors=colors, 
                             line=dict(color='#000000', width=2)))
    
    py.iplot([trace])
    
     
    image.png

    不知道叫什么图

    title = 'Main Source for News'
    
    labels = ['Television', 'Newspaper', 'Internet', 'Radio']
    
    colors = ['rgba(67,67,67,1)', 'rgba(115,115,115,1)', 'rgba(49,130,189, 1)', 'rgba(189,189,189,1)']
    
    mode_size = [8, 8, 12, 8]
    
    line_size = [2, 2, 4, 2]
    
    x_data = [
        [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013],
        [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013],
        [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013],
        [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013],
    ]
    
    y_data = [
        [74, 82, 80, 74, 73, 72, 74, 70, 70, 66, 66, 69],
        [45, 42, 50, 46, 36, 36, 34, 35, 32, 31, 31, 28],
        [13, 14, 20, 24, 20, 24, 24, 40, 35, 41, 43, 50],
        [18, 21, 18, 21, 16, 14, 13, 18, 17, 16, 19, 23],
    ]
    
    traces = []
    
    for i in range(0, 4):
        traces.append(go.Scatter(
            x=x_data[i],
            y=y_data[i],
            mode='lines',
            line=dict(color=colors[i], width=line_size[i]),
            connectgaps=True,
        ))
    
        traces.append(go.Scatter(
            x=[x_data[i][0], x_data[i][11]],
            y=[y_data[i][0], y_data[i][11]],
            mode='markers',
            marker=dict(color=colors[i], size=mode_size[i])
        ))
    
    layout = go.Layout(
        xaxis=dict(
            showline=True,
            showgrid=False,
            showticklabels=True,
            linecolor='rgb(204, 204, 204)',
            linewidth=2,
            autotick=False,
            ticks='outside',
            tickcolor='rgb(204, 204, 204)',
            tickwidth=2,
            ticklen=5,
            tickfont=dict(
                family='Arial',
                size=12,
                color='rgb(82, 82, 82)',
            ),
        ),
        yaxis=dict(
            showgrid=False,
            zeroline=False,
            showline=False,
            showticklabels=False,
        ),
        autosize=False,
        margin=dict(
            autoexpand=False,
            l=100,
            r=20,
            t=110,
        ),
        showlegend=False,
    )
    
    annotations = []
    
    # Adding labels
    for y_trace, label, color in zip(y_data, labels, colors):
        # labeling the left_side of the plot
        annotations.append(dict(xref='paper', x=0.05, y=y_trace[0],
                                      xanchor='right', yanchor='middle',
                                      text=label + ' {}%'.format(y_trace[0]),
                                      font=dict(family='Arial',
                                                size=16,
                                                color=colors,),
                                      showarrow=False))
        # labeling the right_side of the plot
        annotations.append(dict(xref='paper', x=0.95, y=y_trace[11],
                                      xanchor='left', yanchor='middle',
                                      text='{}%'.format(y_trace[11]),
                                      font=dict(family='Arial',
                                                size=16,
                                                color=colors,),
                                      showarrow=False))
    # Title
    annotations.append(dict(xref='paper', yref='paper', x=0.0, y=1.05,
                                  xanchor='left', yanchor='bottom',
                                  text='Main Source for News',
                                  font=dict(family='Arial',
                                            size=30,
                                            color='rgb(37,37,37)'),
                                  showarrow=False))
    # Source
    annotations.append(dict(xref='paper', yref='paper', x=0.5, y=-0.1,
                                  xanchor='center', yanchor='top',
                                  text='Source: PewResearch Center & ' +
                                       'Storytelling with data',
                                  font=dict(family='Arial',
                                            size=12,
                                            color='rgb(150,150,150)'),
                                  showarrow=False))
    
    layout['annotations'] = annotations
    
    fig = go.Figure(data=traces, layout=layout)
    py.iplot(fig)
    
     
    image.png

    4、各种具体语法

    pdf

     
    image.png

    5、总结

    画的图真是好看,而且划过的图会自动上传到云端。

     
    image.png


    作者:五长生
    链接:https://www.jianshu.com/p/57bad75139ca
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    从yum源下载软件包
    本地yum源建立
    Redis慢查询,redis-cli,redis-benchmark,info
    Centos6.6安装mysql记录
    Nginx常用命令(加入系统服务)
    Nginx+keepalived双机热备(主从模式)
    Nginx反向代理+负载均衡简单实现
    Centos7安装Python3.5
    CentOS 6.4下OpenSSH升级到6.7操作
    Redis详解
  • 原文地址:https://www.cnblogs.com/wangshicheng/p/10935764.html
Copyright © 2020-2023  润新知