首頁 > 軟體

python視覺化plotly 圖例(legend)設定

2022-02-17 16:01:33

一、圖例(legend)

import plotly.io as pio
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import pandas as pd
import numpy as np

# 設定plotly預設主題
pio.templates.default = 'plotly_white'

# 設定pandas列印時顯示所有列
pd.set_option('display.max_columns', None)

二、update_layout(legend={}) 相關引數及範例

官方檔案:https://plotly.com/python/reference/layout/

官方範例:https://plotly.com/python/legend/

  • showlegend:是否顯示圖例,以下任一種情況發生時,該引數預設值為 True:1. 兩個及兩個以上的 trace 2. 有餅圖3. 有一個 trace 顯式指定 showlegend=True
  • legend:圖例相關設定,字典型別,可取屬性如下:
    • bgcolor:設定圖例的背景顏色
    • bordercolor:設定圖例邊框的顏色
    • borderwidth:設定圖例邊框的寬度
    • font:設定圖例條目的文字字型,字典型別,可取屬性如下:
    • color:字型顏色
    • family:字型,字串,可以為 Arial、Balto、Courier New、Droid Sans、Droid Serif、Droid Sans Mono、Gravitas One、Old Standard TT、Open Sans、Overpass、PT Sans Narrow、Raleway、Times New Roman
    • size:字型大小
  • orientation:設定圖例的方向。'v'(預設值)表示豎直顯示圖例、'h'表示水平顯示圖例
  • title:設定圖例的標題,字典型別,可取屬性如下:

font:設定圖例條目的文字字型,字典型別,可取屬性如下:

  • color:字型顏色
  • family:字型,字串,可以為 Arial、Balto、Courier New、Droid Sans、Droid Serif、Droid Sans Mono、Gravitas One、Old Standard TT、Open Sans、Overpass、PT Sans Narrow、Raleway、Times New Roman
  • size:字型大小

side:設定圖例標題相對於條目的位置。當 orientation='v' 時預設為 'top'、當 orientation='h'時預設為 'left'、當為 'top left'時可用於擴充套件圖例的面積
text:設定圖例標題

  • grouptitlefont:設定圖例組名的文字字型,字典型別,可取屬性如下:
    • color:字型顏色
    • family:字型,字串,可以為 Arial、Balto、Courier New、Droid Sans、Droid Serif、Droid Sans Mono、Gravitas One、Old Standard TT、Open Sans、Overpass、PT Sans Narrow、Raleway、Times New Roman
    • size:字型大小
  • itemsizing:設定圖例條目的符號是否跟其 ‘trace’ 有關,如果為 'constant',則所有條目的符號大小一致。
    • 可取 'trace'、 'constant'
  • itemwidth:設定條目的寬度(除 title 以外的部分)
    • 大於等於30的浮點數,預設值為30
  • tracegroupgap:設定圖例組之間的間隔
    • 大於等於0的浮點數,預設值為10

traceorder:設定圖例條目的順序。如果為 'normal',條目將從上到下按照輸入資料的順序排列;如果為 'reversed',則按照輸入資料的逆序排列;如果為 'grouped',條目按照組順序顯示(如果 trace 中的legendgroup 設定了);如果為 'grouped+reversed',則與 'grouped'的順序相反
valign:設定條目符號和對應文字的豎直對齊方式。
可取 'middle'(預設值)、'top'、'bottom'

df = px.data.gapminder().query("year==2007")
fig = px.scatter(df, x="gdpPercap", y="lifeExp", color="continent",
    size="pop", size_max=45, log_x=True)

fig.update_layout(legend=dict(
    yanchor="top",
    y=0.99,
    xanchor="left",
    x=0.01
))

fig.write_image('../pic/legend_1.png', scale=2)
fig.show()

df = px.data.gapminder().query("year==2007")
fig = px.scatter(df, x="gdpPercap", y="lifeExp", color="continent",
    size="pop", size_max=45, log_x=True)

fig.update_layout(legend=dict(
    orientation="h",
    yanchor="bottom",
    y=1.02,
    xanchor="center",
    x=0.5,
    title_text=''
))

fig.write_image('../pic/legend_2.png', scale=2)
fig.show()

df = px.data.gapminder().query("year==2007")
fig = px.scatter(df, x="gdpPercap", y="lifeExp", color="continent",
    size="pop", size_max=45, log_x=True)


fig.update_layout(
    legend=dict(
        x=0,
        y=1,
        traceorder="reversed",
        title_font_family="Times New Roman",
        font=dict(
            family="Courier",
            size=12,
            color="black"
        ),
        bgcolor="LightSteelBlue",
        bordercolor="Black",
        borderwidth=2
    )
)

fig.write_image('../pic/legend_3.png', scale=2)
fig.show()

fig = go.Figure()

# 使用 name 引數指定條目文字,legendrank 指定順序
fig.add_trace(go.Bar(name="fourth", x=["a", "b"], y=[2,1], legendrank=4))
fig.add_trace(go.Bar(name="second", x=["a", "b"], y=[2,1], legendrank=2))
fig.add_trace(go.Bar(name="first", x=["a", "b"], y=[1,2], legendrank=1))
fig.add_trace(go.Bar(name="third", x=["a", "b"], y=[1,2], legendrank=3))

fig.write_image('../pic/legend_4.png', scale=2)
fig.show()

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=[1, 2, 3],
    y=[2, 1, 3],
    legendgroup="group",  # this can be any string, not just "group"
    legendgrouptitle_text="First Group Title",
    name="first legend group",
    mode="markers",
    marker=dict(color="Crimson", size=10)
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3],
    y=[2, 2, 2],
    legendgroup="group",
    name="first legend group - average",
    mode="lines",
    line=dict(color="Crimson")
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3],
    y=[4, 9, 2],
    legendgroup="group2",
    legendgrouptitle_text="Second Group Title",
    name="second legend group",
    mode="markers",
    marker=dict(color="MediumPurple", size=10)
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3],
    y=[5, 5, 5],
    legendgroup="group2",
    name="second legend group - average",
    mode="lines",
    line=dict(color="MediumPurple")
))

fig.update_layout(title="Try Clicking on the Legend Items!")

fig.write_image('../pic/legend_5.png', scale=2)
fig.show()

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[1, 2, 3, 4, 5],
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[5, 4, 3, 2, 1],
    visible='legendonly'
))

fig.write_image('../pic/legend_6.png', scale=2)
fig.show()

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[1, 2, 3, 4, 5],
    showlegend=False
))


fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[5, 4, 3, 2, 1],
))

fig.update_layout(showlegend=True)

fig.write_image('../pic/legend_7.png', scale=2)
fig.show()

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[1, 2, 3, 4, 5],
    mode='markers',
    marker={'size':10}
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[5, 4, 3, 2, 1],
    mode='markers',
    marker={'size':100}
))

fig.update_layout(legend= {'itemsizing': 'trace'})

fig.write_image('../pic/legend_8.png', scale=2)
fig.show()

到此這篇關於python視覺化plotly 圖例(legend)設定的文章就介紹到這了,更多相關plotly 圖例(legend)設定內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com