我正在使用Plotly python库生成一个带有几个小提琴图和几个实心散点图的图形。无论我的代码中的各个fig.add_trace调用的顺序是什么,小提琴图总是在散点图后面绘制。
有没有人知道是否有特定的方法来控制布局或绘图顺序?像zorder=3这样的?

发布于 2019-10-08 20:27:44
目前,您可以通过对数据数组中的跟踪对象进行排序来控制跟踪类型内的跟踪顺序,但不能跨跟踪类型控制跟踪顺序,因此小提琴将始终绘制在散点后面。
发布于 2021-03-29 20:42:19
对此有一个特性请求,并提出了一个有时有效的变通方法:feature request: z-ordering parameter for traces。
import plotly.express as px
import plotly.graph_objects as go
fig = px.scatter(x=[1,2,3,4], y=[1,2,3,4], size=[1,2,3,4], color=["a","a","b","b"])
fig.add_trace(go.Scatter(x=[1,2,3,4], y=[1,2,3,4], mode="lines", line_color="black"))
# Re-order the data:
fig.data = (fig.data[1],fig.data[0])
# fig.data = fig.data[::-1] # alternatively, via slicing
fig.show()发布于 2020-06-22 07:56:22
我找到了一个聪明的方法来解决这个问题。在这种情况下,首先将图形对象分配给一个变量:
PLOT1 = go.Scatter(STUFF)
PLOT2 = go.Scatter(STUFF)
PLOT3 = go.Scatter(STUFF)然后,您可以指定具有所需顺序的字典:
order = {"1":PLOT3, "2":PLOT1, "3":PLOT2}
for i in np.arange(1, len(order) + 1):
for plot_order, trace in order.items():
if plot_order == str(i):
fig.add_trace(trace)这样你就可以用字典来控制顺序了。我希望它能有所帮助!这对我有帮助。
https://stackoverflow.com/questions/58278444
复制相似问题