我有这个情节:
值范围从 0 到 1,但颜色条扩展到 1 以上和 0 以下。我希望颜色条不显示超出[0, 1]
范围的值。如何才能做到这一点?
我的代码:
import numpy as np
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Contour(
z=np.random.rand(10,10),
x=np.linspace(0,10,10),
y=np.linspace(0,10,10),
contours=dict(
start=0,
end=1,
size=0.25,
),
colorbar=dict(
tick0=0,
dtick=1
)
))
fig.show()
Run Code Online (Sandbox Code Playgroud)
似乎在使用contours.coloring='fill'
(这是默认设置)时,zmin
和zmax
被忽略(由于某种原因)。若然contours.coloring='heatmap'
并zmin
荣幸zmax
。目前我没有看到好的解决办法,但这里有一些可能会有所帮助的事情......
如果您同意渐变,那么contours.coloring='heatmap'
使用zmin=0
和zmax=1
可能可以接受:
import numpy as np
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Contour(
z=np.random.rand(10,10),
x=np.linspace(0,10,10),
y=np.linspace(0,10,10),
contours=dict(
start=0,
end=1,
size=0.25,
coloring="heatmap",
),
colorbar=dict(
tick0=0,
dtick=1,
),
zmin=0,
zmax=1
))
fig.show()
Run Code Online (Sandbox Code Playgroud)
另一个解决方案可能是为以下设置离散端点colorscale
:
fig = go.Figure()
fig.add_trace(go.Contour(
z=np.random.rand(10,10),
x=np.linspace(0,10,10),
y=np.linspace(0,10,10),
contours=dict(
start=0,
end=1,
size=0.25,
),
colorbar=dict(
tick0=0,
dtick=1
),
colorscale=[
[0, "rgb(180, 0, 0)"],
[0.25, "rgb(180, 0, 0)"],
[0.75, "rgb(0, 180, 180)"],
[1, "rgb(0, 180, 180)"],
],
))
fig.show()
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果您尝试将线条和填充结合起来并在整个过程中使用离散的颜色,则线条和填充不会完美对齐:
fig = go.Figure()
fig.add_trace(go.Contour(
z=np.random.rand(10,10),
x=np.linspace(0,10,10),
y=np.linspace(0,10,10),
contours=dict(
start=0,
end=1,
size=0.25,
coloring="heatmap",
),
colorbar=dict(
tick0=0,
dtick=1,
),
colorscale=[
[0, "rgb(40, 40, 40)"],
[0.25, "rgb(40, 40, 40)"],
[0.25, "rgb(80, 80, 80)"],
[0.5, "rgb(80, 80, 80)"],
[0.5, "rgb(120, 120, 120)"],
[0.75, "rgb(120, 120, 120)"],
[0.75, "rgb(180, 180, 180)"],
[1, "rgb(180, 180, 180)"],
],
zmin=0,
zmax=1,
))
fig.show()
Run Code Online (Sandbox Code Playgroud)
...尽管我会再探索一些,看看是否还有另一个论点可以帮助这些对齐。
更新:在每一端的 10% 处使用白色的离散颜色将使我们大部分达到目标。我们还需要设置outlinecolor
和outlinewidth
来隐藏出现的难看的边框。
fig = go.Figure()
fig.add_trace(go.Contour(
z=np.random.rand(10,10),
x=np.linspace(0,10,10),
y=np.linspace(0,10,10),
contours=dict(
start=0,
end=1,
size=0.25,
),
colorbar=dict(
tick0=0,
dtick=1,
outlinewidth=2,
outlinecolor="rgb(255, 255, 255)",
),
colorscale=[
[0, "rgb(255, 255, 255)"],
[0.1, "rgb(255, 255, 255)"],
[0.1, "rgb(180, 180, 0)"], #here is where you set your min color
[0.9, "rgb(0, 0, 180)"], #here is where you set your max color
[0.9, "rgb(255, 255, 255)"],
[1, "rgb(255, 255, 255)"],
],
))
fig.show()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
248 次 |
最近记录: |