關於Python可視化Dash工具之plotly基本圖形示例詳解
Plotly Express是對 Plotly.py 的高級封裝,內置瞭大量實用、現代的繪圖模板,用戶隻需調用簡單的API函數,即可快速生成漂亮的互動圖表,可滿足90%以上的應用場景。
本文借助Plotly Express提供的幾個樣例庫進行散點圖、折線圖、餅圖、柱狀圖、氣泡圖、桑基圖、玫瑰環圖、堆積圖、二維面積圖、甘特圖等基本圖形的實現。
代碼示例
import plotly.express as px df = px.data.iris() #Index(['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species','species_id'],dtype='object') # sepal_length sepal_width ... species species_id # 0 5.1 3.5 ... setosa 1 # 1 4.9 3.0 ... setosa 1 # 2 4.7 3.2 ... setosa 1 # .. ... ... ... ... ... # 149 5.9 3.0 ... virginica 3 # plotly.express.scatter(data_frame=None, x=None, y=None, # color=None, symbol=None, size=None, # hover_name=None, hover_data=None, custom_data=None, text=None, # facet_row=None, facet_col=None, facet_col_wrap=0, facet_row_spacing=None, facet_col_spacing=None, # error_x=None, error_x_minus=None, error_y=None, error_y_minus=None, # animation_frame=None, animation_group=None, # category_orders=None, labels=None, orientation=None, # color_discrete_sequence=None, color_discrete_map=None, color_continuous_scale=None, # range_color=None, color_continuous_midpoint=None, # symbol_sequence=None, symbol_map=None, opacity=None, # size_max=None, marginal_x=None, marginal_y=None, # trendline=None, trendline_color_override=None, # log_x=False, log_y=False, range_x=None, range_y=None, # render_mode='auto', title=None, template=None, width=None, height=None) # 以sepal_width,sepal_length制作標準散點圖 fig = px.scatter(df, x="sepal_width", y="sepal_length") fig.show() #以鳶尾花類型-species作為不同顏色區分標志 color fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species") fig.show() #追加petal_length作為散點大小,變位氣泡圖 size fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species",size='petal_length') fig.show() #追加petal_width作為額外列,在懸停工具提示中顯示為額外數據 hover_data fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species", size='petal_length', hover_data=['petal_width']) fig.show() #以鳶尾花類型-species區分散點的形狀 symbol fig = px.scatter(df, x="sepal_width", y="sepal_length", symbol="species" ,color="species", size='petal_length', hover_data=['petal_width']) fig.show() #追加petal_width作為額外列,在懸停工具提示中以粗體顯示。 hover_name fig = px.scatter(df, x="sepal_width", y="sepal_length", symbol="species" ,color="species", size='petal_length', hover_data=['petal_width'], hover_name="species") fig.show() #以鳶尾花類型編碼-species_id作為散點的文本值 text fig = px.scatter(df, x="sepal_width", y="sepal_length", symbol="species" ,color="species", size='petal_length', hover_data=['petal_width'], hover_name="species", text="species_id") fig.show() #追加圖表標題 title fig = px.scatter(df, x="sepal_width", y="sepal_length", symbol="species" ,color="species", size='petal_length', hover_data=['petal_width'], hover_name="species", text="species_id",title="鳶尾花分類展示") fig.show() #以鳶尾花類型-species作為動畫播放模式 animation_frame fig = px.scatter(df, x="sepal_width", y="sepal_length", symbol="species" ,color="species", size='petal_length', hover_data=['petal_width'], hover_name="species", text="species_id",title="鳶尾花分類展示", animation_frame="species") fig.show() #固定X、Y最大值最小值范圍range_x,range_y,防止動畫播放時超出數值顯示 fig = px.scatter(df, x="sepal_width", y="sepal_length", symbol="species" ,color="species", size='petal_length', hover_data=['petal_width'], hover_name="species", text="species_id",title="鳶尾花分類展示", animation_frame="species",range_x=[1.5,4.5],range_y=[4,8.5]) fig.show() df = px.data.gapminder().query("country=='China'") # Index(['country', 'continent', 'year', 'lifeExp', 'pop', 'gdpPercap', 'iso_alpha', 'iso_num'],dtype='object') # country continent year ... gdpPercap iso_alpha iso_num # 288 China Asia 1952 ... 400.448611 CHN 156 # 289 China Asia 1957 ... 575.987001 CHN 156 # 290 China Asia 1962 ... 487.674018 CHN 156 # plotly.express.line(data_frame=None, x=None, y=None, # line_group=None, color=None, line_dash=None, # hover_name=None, hover_data=None, custom_data=None, text=None, # facet_row=None, facet_col=None, facet_col_wrap=0, # facet_row_spacing=None, facet_col_spacing=None, # error_x=None, error_x_minus=None, error_y=None, error_y_minus=None, # animation_frame=None, animation_group=None, # category_orders=None, labels=None, orientation=None, # color_discrete_sequence=None, color_discrete_map=None, # line_dash_sequence=None, line_dash_map=None, # log_x=False, log_y=False, # range_x=None, range_y=None, # line_shape=None, render_mode='auto', title=None, # template=None, width=None, height=None) # 顯示中國的人均壽命 fig = px.line(df, x="year", y="lifeExp", title='中國人均壽命') fig.show() # 以不同顏色顯示亞洲各國的人均壽命 df = px.data.gapminder().query("continent == 'Asia'") fig = px.line(df, x="year", y="lifeExp", color="country", hover_name="country") fig.show() # line_group="country" 達到按國傢去重的目的 df = px.data.gapminder().query("continent != 'Asia'") # remove Asia for visibility fig = px.line(df, x="year", y="lifeExp", color="continent", line_group="country", hover_name="country") fig.show() # bar圖 df = px.data.gapminder().query("country == 'China'") fig = px.bar(df, x='year', y='lifeExp') fig.show() df = px.data.gapminder().query("continent == 'Asia'") fig = px.bar(df, x='year', y='lifeExp',color="country" ) fig.show() df = px.data.gapminder().query("country == 'China'") fig = px.bar(df, x='year', y='pop', hover_data=['lifeExp', 'gdpPercap'], color='lifeExp', labels={'pop':'population of China'}, height=400) fig.show() fig = px.bar(df, x='year', y='pop', hover_data=['lifeExp', 'gdpPercap'], color='pop', labels={'pop':'population of China'}, height=400) fig.show() df = px.data.medals_long() # # nation medal count # # 0 South Korea gold 24 # # 1 China gold 10 # # 2 Canada gold 9 # # 3 South Korea silver 13 # # 4 China silver 15 # # 5 Canada silver 12 # # 6 South Korea bronze 11 # # 7 China bronze 8 # # 8 Canada bronze 12 fig = px.bar(df, x="nation", y="count", color="medal", title="Long-Form Input") fig.show() # 氣泡圖 df = px.data.gapminder() # X軸以對數形式展現 fig = px.scatter(df.query("year==2007"), x="gdpPercap", y="lifeExp", size="pop", color="continent",hover_name="country", log_x=True, size_max=60) fig.show() # X軸以標準形式展現 fig = px.scatter(df.query("year==2007"), x="gdpPercap", y="lifeExp", size="pop", color="continent",hover_name="country", log_x=False, size_max=60) fig.show() # 餅狀圖 px.data.gapminder().query("year == 2007").groupby('continent').count() # country year lifeExp pop gdpPercap iso_alpha iso_num # continent # Africa 52 52 52 52 52 52 52 # Americas 25 25 25 25 25 25 25 # Asia 33 33 33 33 33 33 33 # Europe 30 30 30 30 30 30 30 # Oceania 2 2 2 2 2 2 2 df = px.data.gapminder().query("year == 2007").query("continent == 'Americas'") fig = px.pie(df, values='pop', names='country', title='Population of European continent') fig.show() df.loc[df['pop'] < 10000000, 'country'] = 'Other countries' fig = px.pie(df, values='pop', names='country', title='Population of European continent', hover_name='country',labels='country') fig.update_traces(textposition='inside', textinfo='percent+label') fig.show() df.loc[df['pop'] < 10000000, 'country'] = 'Other countries' fig = px.pie(df, values='pop', names='country', title='Population of European continent', hover_name='country',labels='country', color_discrete_sequence=px.colors.sequential.Blues) fig.update_traces(textposition='inside', textinfo='percent+label') fig.show() # 二維面積圖 df = px.data.gapminder() fig = px.area(df, x="year", y="pop", color="continent", line_group="country") fig.show() fig = px.area(df, x="year", y="pop", color="continent", line_group="country", color_discrete_sequence=px.colors.sequential.Blues) fig.show() df = px.data.gapminder().query("year == 2007") fig = px.bar(df, x="pop", y="continent", orientation='h', hover_name='country', text='country',color='continent') fig.show() # 甘特圖 import pandas as pd df = pd.DataFrame([ dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Completion_pct=50, Resource="Alex"), dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Completion_pct=25, Resource="Alex"), dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Completion_pct=75, Resource="Max") ]) fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Completion_pct") fig.update_yaxes(autorange="reversed") fig.show() fig = px.timeline(df, x_start="Start", x_end="Finish", y="Resource", color="Resource") fig.update_yaxes(autorange="reversed") fig.show() # 玫瑰環圖 df = px.data.tips() # total_bill tip sex smoker day time size # 0 16.99 1.01 Female No Sun Dinner 2 # 1 10.34 1.66 Male No Sun Dinner 3 # 2 21.01 3.50 Male No Sun Dinner 3 # 3 23.68 3.31 Male No Sun Dinner 2 # 4 24.59 3.61 Female No Sun Dinner 4 fig = px.sunburst(df, path=['day', 'time', 'sex'], values='total_bill') fig.show() import numpy as np df = px.data.gapminder().query("year == 2007") fig = px.sunburst(df, path=['continent', 'country'], values='pop', color='lifeExp', hover_data=['iso_alpha'], color_continuous_scale='RdBu', color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop'])) fig.show() df = px.data.gapminder().query("year == 2007") fig = px.sunburst(df, path=['continent', 'country'], values='pop', color='pop', hover_data=['iso_alpha'], color_continuous_scale='RdBu') fig.show() # treemap圖 import numpy as np df = px.data.gapminder().query("year == 2007") df["world"] = "world" # in order to have a single root node fig = px.treemap(df, path=['world', 'continent', 'country'], values='pop', color='lifeExp', hover_data=['iso_alpha'], color_continuous_scale='RdBu', color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop'])) fig.show() fig = px.treemap(df, path=['world', 'continent', 'country'], values='pop', color='pop', hover_data=['iso_alpha'], color_continuous_scale='RdBu', color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop'])) fig.show() fig = px.treemap(df, path=['world', 'continent', 'country'], values='pop', color='lifeExp', hover_data=['iso_alpha'], color_continuous_scale='RdBu') fig.show() fig = px.treemap(df, path=[ 'continent', 'country'], values='pop', color='lifeExp', hover_data=['iso_alpha'], color_continuous_scale='RdBu') fig.show() fig = px.treemap(df, path=[ 'country'], values='pop', color='lifeExp', hover_data=['iso_alpha'], color_continuous_scale='RdBu') fig.show() # 桑基圖 tips = px.data.tips() fig = px.parallel_categories(tips, color="size", color_continuous_scale=px.colors.sequential.Inferno) fig.show()
到此這篇關於關於Python可視化Dash工具之plotly基本圖形示例詳解的文章就介紹到這瞭,更多相關Python plotly基本圖形內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python可視化工具Plotly的應用教程
- Python matplotlib繪制散點圖配置(萬能模板案例)
- Python可視化學習之seaborn繪制線型回歸曲線
- 前端AI機器學習在瀏覽器中訓練模型
- 一文教你利用Python畫花樣圖