- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目标是在 x=1 处的每个子图中获得垂直无限线。在此示例中,我将在第一行第一列中尝试使用 type="line"的单个绘图形状
from plotly.subplots import make_subplots
import plotly.graph_objects as go
import numpy as np
fig = make_subplots(
rows=2,
cols=2,
subplot_titles=list(map(str, range(4))),
shared_xaxes=True,
shared_yaxes=False,
)
time = np.linspace(-np.pi, np.pi, 1000)
for i in range(4):
data = np.sin((i+1) * time)
fig.add_trace(
go.Scatter(y=data,x=time, name=str(i)),
row=1 if i in [0, 1] else 2,
col=1 if i in [0, 2] else 2,
)
fig.add_shape(
go.layout.Shape(
type="line",
yref="paper",
xref="x",
x0=1,
y0=0,
x1=1,
y1=1,
line=dict(color="RoyalBlue", width=3),
),row=1,col=1)
fig.write_image("1.png",width=800, height=600, scale=1)
所以看起来添加一个带有行和列的形状会覆盖 yref 和 xref 属性,返回一段线而不是一条无限线。在打印之前强制 yref 为“纸张”...
for shape in fig.layout.shapes:
shape["yref"]="paper"
这可以说更糟糕,一条相对于整个图而不是子图 y 轴的线。以前有人遇到过这个问题吗?有什么想法吗?
最佳答案
这是你想要的 plotly 吗?
如果是这种情况,那么您必须向由位置 row=i,col=j
定义的每个子图插入一个形状。下面的代码片段将为您做到这一点。如果您更改子图的总数,您只需要对网格的行数和列数进行一些监督即可。
from plotly.subplots import make_subplots
import plotly.graph_objects as go
import numpy as np
fig = make_subplots(
rows=2,
cols=2,
subplot_titles=list(map(str, range(4))),
shared_xaxes=True,
shared_yaxes=False,
)
time = np.linspace(-np.pi, np.pi, 1000)
for i in range(4):
data = np.sin((i+1) * time)
fig.add_trace(
go.Scatter(y=data,x=time, name=str(i)),
row=1 if i in [0, 1] else 2,
col=1 if i in [0, 2] else 2,
)
colors = ['blue', 'firebrick', 'green', 'purple']
rows = 2
cols = 2
# add traces
counter=0 # for colors
for i in range(1,3):
for j in range(1,3):
fig.add_shape(go.layout.Shape(type="line",
yref="paper",
xref="x",
x0=1,
y0=-2,
x1=1,
y1=2,
#line=dict(color="RoyalBlue", width=3),),
line=dict(color=colors[counter], width=3),),
row=i,
col=j)
counter = counter + 1
fig.show()
评论后编辑:
据我所知,您不能直接定义无界。但是,只要您定义的轴限制远远超出您想要可视化的数据,您想要完成的任务就会效果很好。因为与您的评论相反,您可以像这样设置每个子图的轴限制:
# Set y ranges for each subplot
for i in range(1,3):
for j in range(1,3):
fig.update_yaxes(range=[-4, 4], row=i, col=j)
您可以从数据集中找到正确的最大值和最小值,而不是预定义的限制。
图 2:未缩放
图 3:缩小
希望这对您有所帮助!
关于python - Plotly:如何在子图中制作无界垂直线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59214406/
我有一个Foldable的Integer s 是无界的,因此我无法应用 Max折叠到它。 定义 Max 有意义吗? Nothing 的实例当一个值不存在时?有Ord a => Semigroup (M
我有两个简单的问题。我有一个 LinkedBlockingQueue,我将其简单地创建为 新的 LinkedBlockingQueue() 所以我认为这保证是无限的,对吗? 如果确实如此,那么说在此队
是否可以在未指定边界之一的情况下使用 git bisect。例如,如果我发现 HEAD 上有问题但我怀疑它在过去在某个时候有效,有没有办法告诉 git “尝试一次提交之前,如果那不起作用尝试两次提交之
我是一名优秀的程序员,十分优秀!