python-plotly绘图保姆级教程(各类图表、绘图配置、地理数据可视化、常见问题)

plotly基本方法、图表

两种使用plotly的方法:

  • 低阶API:Plotly Graph Objects(go)
  • 高阶API:Plotly Express(px)

导入语句为:

import plotly.express as px
import plotly.graph_objects as go

绘制表格

go.Table函数,指定header对应的列名和cells对应的数据,填充的颜色用fill_color指定。

fig = go.Figure(data=[go.Table(header=dict(values=views_top.columns,
                                           fill_color='yellow',
),
                 cells=dict(values=[views_top['event'],views_top['views']],
                            fill_color='paleturquoise',
                           ))
                     ])
fig.show()# 显示图

绘制热力图

density_heatmap函数,热力图的颜色根据z轴的值进行集聚计算得到。

fig = px.density_heatmap(df, x="published_year", y="views",z="comments")
fig.show()

绘制气泡图

在散点图中用size参数指定点的大小参考字段,即变为气泡图。

fig = px.scatter(df,x='comments',y='views',size='duration',color='num_speaker', log_x=True, size_max=60)
fig.show()

绘制环状图(donut chart)

饼图函数中设置hole参数值的大小,决定环图的孔的大小,即将饼图变为环图。

fig = go.Figure(
    data=[
        go.Pie(labels=labels, values=values, hole=0.2)
    ])
fig.show()

绘制柱状图

orientation='h'参数指定柱状图为横向

fig = px.bar(views_top, x='views', y='event',orientation='h')
fig.show()

绘制动图

通过animation_frame参数设置数据变化的依据的字段,据此可设置为随时间变化、随区域变化等效果。

px.scatter(df, x="duration", y="comments",animation_frame="published_year", size="duration", color="published_day")

绘制玫瑰图(polar bar chart/wind rose)

  • px方法: px.bar_polar绘制玫瑰风型图,r对应半径长度,theta为角度。

fig = px.bar_polar(df, r="frequency", theta="direction",
                   color="strength", template="plotly_dark",
                   color_discrete_sequence= px.colors.sequential.Plasma_r)
fig.show()
  • go方法(逐步添加玫瑰花瓣):
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Barpolar(
    r=[77.5, 72.5, 70.0, 45.0, 22.5],
    name='A',
    marker_color='rgb(106,81,163)'
))
fig.add_trace(go.Barpolar(
    r=[57.5, 50.0, 45.0, 35.0, 20.0],
    name='B',
    marker_color='rgb(158,154,200)'
))
fig.add_trace(go.Barpolar(
    r=[40.0, 30.0, 30.0, 35.0, 7.5],
    name='C',
    marker_color='rgb(203,201,226)'
))
fig.update_traces(text=['A', 'B', 'C', 'D', 'E'])
fig.update_layout(
    title='A Test',
    #font_size=16,
    legend_font_size=16,
    # polar_radialaxis_ticksuffix='%',
    polar_angularaxis_rotation=90,
)
fig.show()

绘制旭日图(sunburst)

旭日图的作用是显示层级关系的饼状图,对应px.sunburst函数。

  • 内外层级关系
    path指定的多个字段来区分内外对应的层级关系。color_continuous_midpoint指定了色带的取值中点为按人口数加权平均的人口寿命,即人均寿命。
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']))
  • 用字典格式数据绘制
    branchvalues设置内外关系。
data = dict(
    character=["Eve", "Cain", "Seth", "Enos", "Noam", "Abel", "Awan", "Enoch", "Azura"],
    parent=["", "Eve", "Eve", "Seth", "Seth", "Eve", "Eve", "Awan", "Eve" ],
    value=[42, 14, 12, 10, 2, 6, 6, 4, 4]) # 这里的value对应上面的character
fig =px.sunburst(
    data,
    names='character',
    parents='parent',
    values='value',
    branchvalues='total',
    color = 'value'
)
fig.update_layout(showlegend=True)
fig.show()

三维图绘制

三维散点图

px.scatter_3d指定x、y、z轴参考的数据,color指定颜色深浅参考的字段值。

fig = px.scatter_3d(df,x='comments',y='views',z='duration',color='views')
fig.show()

3D表面图

传入三维数据给go.Surface函数。

fig = go.Figure(data=[go.Surface(z=df[['duration','views','comments']].values)])

fig.update_layout(title='3D Surface', autosize=False,
                  width=500, height=500,
                  margin=dict(l=65, r=50, b=65, t=90))

fig.show()

fig.update_layout用于布局参数的设置,适用于一开始图表未设置布局参数的情况。


绘图配置

保存图片

导出html:

fig.write_html("3d.html")

绘制子图

根据facet_col指定列,按列对应的字段来分为多个子图显示。

px.scatter(df, x="duration", y="comments",
           animation_frame="published_month", animation_group="event",
           facet_col="published_day",width=1500, height=500,
           size="views", color="published_day",
          )

绘制误差棒

error_y指定误差棒对应的误差值

fig =  go.Figure(
    data=[
        go.Bar(
    x=views_top['event'], y=views_top['views'],
    error_y=dict(type='data', array=views_top['error'].values)
)
    ])
fig.show()

图片悬停标注

hover_name设置悬停时显示的内容,hover_data设置悬停时显示的数据。

px.scatter(gapminder2002, x='gdpPercap', y='lifeExp',
           color='continent', size='pop', size_max=60,
           hover_name="country", # 悬停显示的内容
           hover_data=["year","continent","gdpPercap","lifeExp"],
           facet_col='continent',
          title="Mathpretty")

plotly地理数据可视化

基于mapbox绘图,首先需要在mapbox网站注册并设置自己的API,然后在绘图前用px.set_mapbox_access_token('YOURTOKEN')命令设置调用的API。

空间散点图

  • scatter_mapbox函数
px.set_mapbox_access_token('YOURTOKEN')
fig = px.scatter_mapbox(df, lat="lat", lon="lon",
                        color="region", 
                        size="views",
                  color_continuous_scale=
                        px.colors.cyclical.IceFire, size_max=15)
fig.show()

plotly配色

Plotly配色是给了三套配色(大类), 分别是:

层次渐变 Sequential Color scales
强烈的对比渐变, Diverging Color scales
循环渐变, Cyclical Color scales


plotly绘图常见问题参考

批量保存图片

https://zhuanlan.zhihu.com/p/138789325

地理可视化

https://plotly.com/python/map-subplots-and-small-multiples/

在jupyter环境中显示plotly绘图结果

需要安装node.js和插件。
https://www.jianshu.com/p/9cb9dbff06d1

reference

https://neptune.ai/blog/plotly-python-tutorial-for-machine-learning-specialists
https://mathpretty.com/11919.html

  • 7
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python数据分析基于Plotly的动态可视化绘图 PDF 是一种基于Python编程语言和Plotly库的方法来创建动态可视化图表的文件格式。Plotly是一个强大的开源数据可视化工具,它提供了丰富的交互性和可定制性。 通过使用Python编程语言和Plotly库,我们可以使用各种数据分析技术来生成动态的图表。这些图表可以展示数据的变化趋势、模式、异常值等,帮助我们更好地理解和分析数据。 为了创建动态可视化图表,我们首先需要准备好数据。在Python中,我们可以使用各种数据分析库(如Pandas、Numpy)来加载、清理和处理数据。一旦数据准备好,我们可以使用Plotly库中的函数和方法来创建各种类型的图表,如折线图、柱状图、饼图等。 通过使用Plotly库的特性,我们可以将图表设置为动态的,这样它们就可以根据数据的变化实时更新。我们可以使用滑动条、按钮等交互工具来控制图表的动态变化,让我们能够自定义和调整图表的呈现方式。 一旦我们创建好了动态可视化图表,我们可以将它们保存为PDF文件。PDF文件是一种流行的文件格式,它可以在各种设备上进行查看和共享,而不会丢失图像和样式的质量。通过将动态可视化图表保存为PDF文件,我们可以方便地在演示、报告和分享过程中使用它们。 总结来说,Python数据分析基于Plotly的动态可视化绘图PDF是一种利用Python编程语言和Plotly库创建动态可视化图表,并将其保存为PDF文件的方法。它能够帮助我们更好地理解和分析数据,并在演示、报告和分享过程中提供便利。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值