Python 打印分散文本元素没有自动调整功能
我正在尝试使用正方形和标签创建热图(我需要用一种特殊的方式自定义它,所以我不能直接使用热图)。然而,有一个问题是,文本被剪切了 有没有办法修复它,使图形自动匹配文本 下面是要复制的代码:Python 打印分散文本元素没有自动调整功能,python,plotly,Python,Plotly,我正在尝试使用正方形和标签创建热图(我需要用一种特殊的方式自定义它,所以我不能直接使用热图)。然而,有一个问题是,文本被剪切了 有没有办法修复它,使图形自动匹配文本 下面是要复制的代码: import numpy as np import plotly.graph_objects as go # generate value values = np.random.random((5, 10)) # initialize figure fig = go.Figure() # fill fi
import numpy as np
import plotly.graph_objects as go
# generate value
values = np.random.random((5, 10))
# initialize figure
fig = go.Figure()
# fill figure
for i, row in enumerate(values):
max_val = row.max()
# add text for the row
fig.add_trace(go.Scatter(
x=[-0.2],
y=[i + 0.5],
text=['MY TEXT'],
mode="text",
textposition="middle left"
))
# add square for each value in a row
for j, val in enumerate(row):
fig.add_trace(go.Scatter(
x=[j,j,j+1,j+1,j],
y=[i,i+1,i+1,i,i],
fill="toself",
mode='lines',
fillcolor='blue',
line=dict(width=0),
opacity=val/max_val
))
# figure layout
fig.update_layout(
height=400,
width=600,
showlegend=False,
)
fig.show()
我认为问题在于,在x轴上,图形增加的增量中没有足够的空间,因此我提出了两种解决方案 解决方案之一就是增加宽度。这可以通过以下方式实现:
import numpy as np
import plotly.graph_objects as go
# generate value
values = np.random.random((5, 10))
# initialize figure
fig = go.Figure()
# fill figure
for i, row in enumerate(values):
max_val = row.max()
# add text for the row
fig.add_trace(go.Scatter(
x=[-0.2],
y=[i + 0.5],
text=['MY TEXT'],
mode="text",
textposition="middle left"
))
# add square for each value in a row
for j, val in enumerate(row):
fig.add_trace(go.Scatter(
x=[j,j,j+1,j+1,j],
y=[i,i+1,i+1,i,i],
fill="toself",
mode='lines',
fillcolor='blue',
line=dict(width=0),
opacity=val/max_val
))
# figure layout
fig.update_layout(
height=400,
width=1200,
showlegend=False,
)
fig.show()
另一个是将cliponaxis设置为false,如下所示:
import numpy as np
import plotly.graph_objects as go
# generate value
values = np.random.random((5, 10))
# initialize figure
fig = go.Figure()
# fill figure
for i, row in enumerate(values):
max_val = row.max()
# add text for the row
fig.add_trace(go.Scatter(
x=[-0.2],
y=[i + 0.5],
text=['MY TEXT'],
cliponaxis=False,
mode="text",
textposition="middle left"
))
# add square for each value in a row
for j, val in enumerate(row):
fig.add_trace(go.Scatter(
x=[j,j,j+1,j+1,j],
y=[i,i+1,i+1,i,i],
fill="toself",
mode='lines',
fillcolor='blue',
line=dict(width=0),
opacity=val/max_val
))
# figure layout
fig.update_layout(
height=400,
width=600,
showlegend=False,
)
fig.show()
解决方法是使用注释,而不是go.Scatter的mode=“text”
fig.add_annotation(
x=-0.2,
y=i+0.5,
text='MY TEXT',
xanchor="right",
valign="middle",
showarrow=False
)
谢谢我只是想知道,是否有一个可以自动调整的解决方案,因为我需要一个紧凑的图表,标签可以有不同的长度,边距可以减少。我想另一个可能的解决方案可能是减少文本大小,但我觉得这个解决方案看起来有点奇怪。我不相信有一个解决方案,允许它自动调整,根据我在试图找出一个解决方案时所做的阅读