本次笔记内容plotly基本用法
一个Scatter的示例:go.Scatter()
一个Scatter的示例:px()
注意
plotly基本用法
每一个trace就像一个独立的图层,互不干扰。data=[trace1, trace2...]将这些图层叠加在一起。
layout定义了data提供的信息之外的东西,比如plot title, 坐标轴的设置import plotly
import plotly.graph_objects as go
trace1 = go.Scatter(...)
trace2 = go.Scatter(...)
layout1 = go.Layout(...)
fig = go.Figure(data=[trace1,trace2],
layout=layout1)
fig.show() # 直接plot出来
# or 保存为.html格式的文件
plotly.offline.plot(dict(data=[trace1,trace2]), filename = 'XXX.html')
[图片上传中…(image.png-fd81bb-1577002591333-0)]
一个Scatter的示例:go.Scatter()import plotly.express as px
import plotly.graph_objects as go
import plotly
tips = px.data.tips() # 用px里的示例数据
tips.head() #看一下
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
trace_tip = go.Scatter(x=tips.total_bill.tolist(),
y=tips.tip.tolist(),
mode='markers+text',
# mode决定图上出现点,线,text等的组合形式
name = 'trace_tip',
marker=dict(color=tips['size'].tolist(), # 上色类别
colorscale='Viridis', # 指定颜色
showscale=True,
size=[i*10 for i in tips['size'].tolist()]), #点大小
# showlegend=True,
text=tips['sex'].tolist(),
textposition='bottom center',
textfont=dict(size=18,color='LightSeaGreen'))
# plotly.offline.plot(dict(data=[trace_tip]),filename='plot.html')
fig = go.Figure(data=[trace_tip])
# 如果在这个基础上接着画,那就[trace_tip1, trace_tip2...]
fig.show()
一个Scatter的示例:px()tips['size10'] = tips['size']*10
fig = px.scatter(tips,x='total_bill',y='tip',size='size10',color='size',size_max=40,
color_continuous_scale=px.colors.sequential.Viridis,text='sex')
# 对于text的颜色大小位置,在update_trace里设置
fig.update_traces(textposition='bottom center',
textfont=dict(size=18,
color='LightSeaGreen'))
fig.write_html('plot.html') # 保存为html格式
# fig.show()
注意:如果用jupyter lab, 需要安装一些jupyter lab及其相关支持,follow官方的步骤:
超级详细的reference: 每个attribue都是什么意思
比方说go.Scatter(mode=...)中有几个mode选项,分别有什么效果,都非常详细。真的太详细了,我喜极而泣T_T
plotly本质上并不是为publish服务的,也不是统计分析友好型的可视化工具。但是interactive的模式能帮助我们更好的了解数据背后的东西(以及更加好看和酷炫)。就分析报告的出具,为发表paper准备的标准化制图而言,可能还是R的ggplot2, ggpubr更加方便顺手一些。对于数据量大,层次丰富,研究目的不那么明确的数据,plotly可能更加便于发现问题。当然还是要根据需求选择工具。
虽然plotly express和R的ggplot2惊人相似,但是express似乎并没有把所有可调节的东西纳入函数里。不像ggplot2的万物皆可调。比如ggplot2可以通过+theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1...))来调节X轴数字字体大小,距离轴的距离,倾斜角度等。plotly我暂时没找到除了update_trace, update_layout之外的,可以在函数内实现的方法。(当然可能是文档看少了)
https://www.jianshu.com/p/21f8bc2ff882