在 Plotly Python 中更改子图标题 position/orientation
Change subplots title position/orientation in Plotly Python
我需要在python情节中更改子情节标题,即旋转90度。我努力了,但没有成功。
这是我的代码
import plotly.offline as pyo
import plotly.graph_objs as go
from plotly import tools
trace1 = go.Bar(
x=[1, 2, 3],
y=[10, 11, 12]
)
trace2 = go.Bar(
x=[1, 2, 3],
y=[100, 110, 120],
)
trace3 = go.Bar(
x=[1, 2, 3],
y=[1000, 1100, 1200],
)
fig = tools.make_subplots(rows=1, cols=3,
shared_xaxes=True, shared_yaxes=True,
vertical_spacing=0.001,
subplot_titles = ('first_title', 'second_title', 'third_title'))
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig.append_trace(trace3, 1, 3)
fig['layout'].update(height=600, width=600, title='main_title')
pyo.plot(fig, filename='file.html')
所以,我想将 'first_title'
、'second_title'
和 'third_title'
旋转 90 度,这样它们就不会相互重叠。有可能解决这个问题吗?
您只需在 pyo.plot(fig, filename='file.html')
行之前添加此代码:
for annotation in fig['layout']['annotations']:
annotation['textangle']=-90
但是这样会导致副标题和主标题重叠,所以建议你去掉。这是最终代码:
import plotly.offline as pyo
import plotly.graph_objs as go
from plotly import tools
trace1 = go.Bar(
x=[1, 2, 3],
y=[10, 11, 12]
)
trace2 = go.Bar(
x=[1, 2, 3],
y=[100, 110, 120],
)
trace3 = go.Bar(
x=[1, 2, 3],
y=[1000, 1100, 1200],
)
fig = tools.make_subplots(rows=1, cols=3,
shared_xaxes=True, shared_yaxes=True,
vertical_spacing=0.001,
subplot_titles = ('first_title', 'second_title', 'third_title'))
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig.append_trace(trace3, 1, 3)
fig['layout'].update(height=600, width=600, title='')
# rotate all the subtitles of 90 degrees
for annotation in fig['layout']['annotations']:
annotation['textangle']=-90
pyo.plot(fig, filename='file.html')
此答案链接到 Can you alter a subplot title location in plotly?,后者寻求正确对齐子图图块的答案。
我对 2 x 2 网格上的子图标题有类似的问题。答案很简单
fig.update_annotations(yshift=20)
我需要在python情节中更改子情节标题,即旋转90度。我努力了,但没有成功。
这是我的代码
import plotly.offline as pyo
import plotly.graph_objs as go
from plotly import tools
trace1 = go.Bar(
x=[1, 2, 3],
y=[10, 11, 12]
)
trace2 = go.Bar(
x=[1, 2, 3],
y=[100, 110, 120],
)
trace3 = go.Bar(
x=[1, 2, 3],
y=[1000, 1100, 1200],
)
fig = tools.make_subplots(rows=1, cols=3,
shared_xaxes=True, shared_yaxes=True,
vertical_spacing=0.001,
subplot_titles = ('first_title', 'second_title', 'third_title'))
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig.append_trace(trace3, 1, 3)
fig['layout'].update(height=600, width=600, title='main_title')
pyo.plot(fig, filename='file.html')
所以,我想将 'first_title'
、'second_title'
和 'third_title'
旋转 90 度,这样它们就不会相互重叠。有可能解决这个问题吗?
您只需在 pyo.plot(fig, filename='file.html')
行之前添加此代码:
for annotation in fig['layout']['annotations']:
annotation['textangle']=-90
但是这样会导致副标题和主标题重叠,所以建议你去掉。这是最终代码:
import plotly.offline as pyo
import plotly.graph_objs as go
from plotly import tools
trace1 = go.Bar(
x=[1, 2, 3],
y=[10, 11, 12]
)
trace2 = go.Bar(
x=[1, 2, 3],
y=[100, 110, 120],
)
trace3 = go.Bar(
x=[1, 2, 3],
y=[1000, 1100, 1200],
)
fig = tools.make_subplots(rows=1, cols=3,
shared_xaxes=True, shared_yaxes=True,
vertical_spacing=0.001,
subplot_titles = ('first_title', 'second_title', 'third_title'))
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig.append_trace(trace3, 1, 3)
fig['layout'].update(height=600, width=600, title='')
# rotate all the subtitles of 90 degrees
for annotation in fig['layout']['annotations']:
annotation['textangle']=-90
pyo.plot(fig, filename='file.html')
此答案链接到 Can you alter a subplot title location in plotly?,后者寻求正确对齐子图图块的答案。
我对 2 x 2 网格上的子图标题有类似的问题。答案很简单
fig.update_annotations(yshift=20)