Plotly Express是對(duì) Plotly.py 的高級(jí)封裝,內(nèi)置了大量實(shí)用、現(xiàn)代的繪圖模板,用戶(hù)只需調(diào)用簡(jiǎn)單的API函數(shù),即可快速生成漂亮的互動(dòng)圖表,可滿(mǎn)足90%以上的應(yīng)用場(chǎng)景。
本文借助Plotly Express提供的幾個(gè)樣例庫(kù)進(jìn)行散點(diǎn)圖、折線(xiàn)圖、餅圖、柱狀圖、氣泡圖、?;鶊D、玫瑰環(huán)圖、堆積圖、二維面積圖、甘特圖等基本圖形的實(shí)現(xiàn)。
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制作標(biāo)準(zhǔn)散點(diǎn)圖
fig = px.scatter(df, x="sepal_width", y="sepal_length")
fig.show()
#以鳶尾花類(lèi)型-species作為不同顏色區(qū)分標(biāo)志 color
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
fig.show()
#追加petal_length作為散點(diǎn)大小,變位氣泡圖 size
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="species",size='petal_length')
fig.show()
#追加petal_width作為額外列,在懸停工具提示中顯示為額外數(shù)據(jù) hover_data
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="species", size='petal_length',
hover_data=['petal_width'])
fig.show()
#以鳶尾花類(lèi)型-species區(qū)分散點(diǎn)的形狀 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()
#以鳶尾花類(lèi)型編碼-species_id作為散點(diǎn)的文本值 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()
#追加圖表標(biāo)題 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="鳶尾花分類(lèi)展示")
fig.show()
#以鳶尾花類(lèi)型-species作為動(dòng)畫(huà)播放模式 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="鳶尾花分類(lèi)展示",
animation_frame="species")
fig.show()
#固定X、Y最大值最小值范圍range_x,range_y,防止動(dòng)畫(huà)播放時(shí)超出數(shù)值顯示
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="鳶尾花分類(lèi)展示",
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)
# 顯示中國(guó)的人均壽命
fig = px.line(df, x="year", y="lifeExp", title='中國(guó)人均壽命')
fig.show()
# 以不同顏色顯示亞洲各國(guó)的人均壽命
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" 達(dá)到按國(guó)家去重的目的
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軸以對(duì)數(shù)形式展現(xiàn)
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軸以標(biāo)準(zhǔn)形式展現(xiàn)
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()
# 玫瑰環(huán)圖
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()
# ?;鶊D
tips = px.data.tips()
fig = px.parallel_categories(tips, color="size",
color_continuous_scale=px.colors.sequential.Inferno)
fig.show()
到此這篇關(guān)于關(guān)于Python可視化Dash工具之plotly基本圖形示例詳解的文章就介紹到這了,更多相關(guān)Python plotly基本圖形內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!