您的位置:首页技术文章
文章详情页

关于Python可视化Dash工具之plotly基本图形示例详解

【字号: 日期:2022-06-24 13:25:12浏览:9作者:猪猪

Plotly Express是对 Plotly.py 的高级封装,内置了大量实用、现代的绘图模板,用户只需调用简单的API函数,即可快速生成漂亮的互动图表,可满足90%以上的应用场景。

本文借助Plotly Express提供的几个样例库进行散点图、折线图、饼图、柱状图、气泡图、桑基图、玫瑰环图、堆积图、二维面积图、甘特图等基本图形的实现。

代码示例

import plotly.express as pxdf = 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作为不同颜色区分标志 colorfig = px.scatter(df, x='sepal_width', y='sepal_length', color='species')fig.show() #追加petal_length作为散点大小,变位气泡图 sizefig = px.scatter(df, x='sepal_width', y='sepal_length', color='species',size=’petal_length’)fig.show() #追加petal_width作为额外列,在悬停工具提示中显示为额外数据 hover_datafig = px.scatter(df, x='sepal_width', y='sepal_length', color='species', size=’petal_length’, hover_data=[’petal_width’])fig.show() #以鸢尾花类型-species区分散点的形状 symbolfig = 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_namefig = 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作为散点的文本值 textfig = 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() #追加图表标题 titlefig = 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_framefig = 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 visibilityfig = 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 12fig = px.bar(df, x='nation', y='count', color='medal', )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 2df = 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 pddf = 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 4fig = px.sunburst(df, path=[’day’, ’time’, ’sex’], values=’total_bill’)fig.show() import numpy as npdf = 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 npdf = px.data.gapminder().query('year == 2007')df['world'] = 'world' # in order to have a single root nodefig = 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基本图形内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!

标签: Python 编程
相关文章: