Plotly 绘图指南

每次都得现场查

Posted by tianchen on July 10, 2022

Plotly

Tips

  • Installation:直接pip install
  • 在jupyter中使用,每次重开浏览器之后都需要plotly.offline.init_notebook_mode()
  • 常用import的写法
import plotly
import plotly.graph_objs as go
from plotly.subplots import make_subplots
import plotly.graph_objects as go
import plotly.express as px
  • 想要添加subplots标题只能在创建figure的时候创建(Dirty)
  • 增加标注
fig.add_annotation(x=2, y=5,
            text="Text annotation with arrow",
            showarrow=True,
            arrowhead=1)
fig.update_layout({'title':{'text':'Predictor Exps.','font_size':50,'font_color':'Black'}})

Basic Template

  • Plotly有好几种后端,与不同的绘图方式
  • go.Scatter等一系列graph_objects来源的绘图函数,直接分别输入x,y,z等等
    • 不同的trace自然的可以在某个fig中交互式的选择是否显示
fig = make_subplots(rows=1, cols=1)

fig.add_trace(
    go.Scatter(
        mode='markers',
        x=box_center[:,0], 
        y=box_center[:,1],
        opacity=1.,
        name=xx,
#     color='red',
    )
)

fig.update_layout(height=500, width=1000, title_text="BEV-view Scatters")
fig.update(layout_coloraxis_showscale=False)
fig.show()
plotly.offline.init_notebook_mode()

  • px.imshow等一些express来源的绘图函数,在fig.add_trace中需要引用它们的px.imshow(xxx).data[0]来实现多figure(但是不确定这样会不会丧失一些交互性)
    • 或者直接用fig = px.imshow(xxx)这样不是很方便画subplots
    • 按照文档的标准用法,应该输入一个pandas的dataframe,但是dataframe似乎不能很好的支持numpy对象而是需要list,所以有些麻烦~
fig.add_trace(
    px.imshow(data_gt1).data[0],
    row=1, col=1
)
fig = px.scatter(x=datas[:,0], y=datas[:,1],opacity=opacities,color=colors,symbol=colors)

Plots-types

Heatmap

  • Plotly-doc: images
  • 注意Go.Image只能针对multi-channel输入,对于单通道的应该用go.Heatmap

Plot Configs

  • go.Scatter(name)每个trace定义的name在绘图函数中定义names参数