首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于Python可视化Dash工具—plotly中级图表

关于Python可视化Dash工具—plotly中级图表

作者头像
python与大数据分析
发布2022-03-11 14:06:33
发布2022-03-11 14:06:33
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

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

本文借助Plotly Express提供的几个样例库进行密度图、小提琴图、箱线图、地图、趋势图,还有用于实现数据预探索的各种关系图、直方图等基本图形的实现。

plotly介于seaborn和pyechart之间,在表达丰富度形式上优于seaborn,在定制化程度上高于pyechart。

代码示例

代码语言:javascript
代码运行次数:0
运行
复制
import plotly.express as px
df = px.data.iris().query('species_id==1')
# marginal_x–'rug' 密度图, 'box' 箱线图, 'violin' 小提琴图, or 'histogram'直方图。
# 如果设置,则在主图上方绘制一个水平子图,以可视化x分布。
# marginal_y–地毯、盒子、小提琴或柱状图中的一种。
# 如果设置,则在主图的右侧绘制一个垂直子图,以显示y分布。
# 鸢尾花类型=1的sepal_width,sepal_length散点图,x轴为密度图,y轴为直方图
fig = px.scatter(df, x="sepal_width", y="sepal_length",
                 marginal_x="rug", marginal_y="histogram")
fig.show()


# 鸢尾花类型=1的sepal_width,sepal_length散点图,x轴为箱线图,y轴为小提琴图
fig = px.scatter(df, x="sepal_width", y="sepal_length",
                 marginal_x="box", marginal_y="violin")
fig.show()


df = px.data.iris()
# 所有花卉,x轴为箱线图,y轴为小提琴图,颜色以鸢尾花类型分类
fig = px.scatter(df, x="sepal_width", y="sepal_length",
                 color="species", size='petal_length',
                 hover_data=['petal_width'], hover_name="species",
                 title="鸢尾花分类展示",
                 marginal_x="box", marginal_y="violin")
fig.show()


# 密度热力图,鸢尾花类型=1的sepal_width,sepal_length散点图,x轴为密度图,y轴为直方图
fig = px.density_heatmap(df.query('species_id==1'),
                         x="sepal_width", y="sepal_length",
                         marginal_x="rug",
                         marginal_y="histogram"
                         )
fig.show()


# 密度热力图,行轴用sex,列轴用smoker进行多维度展示
df = px.data.tips()
fig = px.density_heatmap(df, x="total_bill", y="tip",
                         facet_row="sex", facet_col="smoker")
fig.show()

df = px.data.iris()
# 直方图,只有x轴,箱线图
fig = px.histogram(df, x="sepal_length", color="species",
                   marginal="box")
fig.show()


# 在原有直方图基础上,增加20个区间
fig = px.histogram(df, x="sepal_length", color="species",
                   marginal="box" ,nbins=20)
fig.show()


# 箱线图
fig = px.box(df, x="species", y="sepal_length",
             color='species')
fig.show()


# 在箱线图上追加散点
fig = px.box(df, x="species", y="sepal_length",
             color='species',points='all')
fig.show()


# 散点图矩阵,不指定列会把所有列带出来展示
df = px.data.iris()
fig = px.scatter_matrix(df)
fig.show()


# 散点图矩阵,以鸢尾花颜色分类
fig = px.scatter_matrix(df,
    dimensions=["sepal_width", "sepal_length",
                "petal_width", "petal_length"],
    color="species")
fig.show()


# 散点图,用年份做列分割,每行限定4列
df = px.data.gapminder()
fig = px.scatter(df, x='gdpPercap', y='lifeExp', color='continent', size='pop',
                facet_col='year', facet_col_wrap=4)
fig.show()


# 地图展示,不过精确度太差
df = px.data.election()
# pandas.melt(frame, id_vars=None, value_vars=None,
# var_name=None, value_name='value', col_level=None)
# 参数解释:宽数据--->>长数据
# frame:要处理的数据集。
# id_vars:不需要被转换的列名。
# value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写了。
# var_name和value_name是自定义设置对应的列名。
# col_level :如果列是MultiIndex,则使用此级别。
df = df.melt(id_vars="district", value_vars=["Coderre", "Bergeron", "Joly"],
            var_name="candidate", value_name="votes")
# 获取地图
geojson = px.data.election_geojson()
# 地图展示
fig = px.choropleth(df, geojson=geojson, color="votes", facet_col="candidate",
                    locations="district", featureidkey="properties.district",
                    projection="mercator"
                   )
fig.update_geos(fitbounds="locations", visible=False)
fig.show()


# 条带图
df = px.data.iris()
fig = px.strip(df, x="sepal_width", y="sepal_length",
               color="species", facet_col="species")
fig.show()


# 密度轮廓图
df = px.data.gapminder().query("year == 2007 | year==1957 | year==1982")
fig = px.density_contour(df, x="gdpPercap", y="lifeExp", z="pop",
                         facet_col="year",color="continent")
fig.show()


df = px.data.gapminder().query("year == 2007")
fig = px.density_contour(df, x="gdpPercap", y="lifeExp", z="pop")
fig.update_traces(contours_coloring="fill",
                  contours_showlabels = True)
fig.show()


# 散点图加趋势线图
df = px.data.tips()
fig = px.scatter(
    df, x='total_bill', y='tip', opacity=0.65,
    trendline='ols', trendline_color_override='darkblue'
)
# 散点图加趋势线图
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
                 color="species", facet_col="species",
                 trendline='ols',
                 trendline_color_override='darkblue')
fig.show()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档