【发布时间】:2018-05-17 00:22:09
【问题描述】:
我必须在多个 y 轴上绘制线。然而,在 plotly 中,go.Layout 中的轴生成非常冗长,就像 plotly 文档中的这个示例一样:https://plot.ly/python/multiple-axes/
layout = go.Layout(
title='multiple y-axes example',
width=800,
xaxis=dict(
domain=[0.3, 0.7]
),
yaxis=dict(
title='yaxis title',
titlefont=dict(
color='#1f77b4'
),
tickfont=dict(
color='#1f77b4'
)
## repeat for every new y-axis.
在 matplotlib 中,我喜欢通过生成所有不同的轴并像这样处理循环中的绘图来保存代码:
import matplotlib.pyplot as plt
import numpy as np
# generate dummy data
data = []
for i in range(5):
arr = np.random.random(10) * i
data.append(arr)
colors = ['black', 'red', 'blue', 'green', 'purple']
labels = ['label1', 'label2', 'label3', 'label4', 'label5']
# define other paramters (e.g. linestyle etc.) in lists
fig, ax_orig = plt.subplots(figsize=(10, 5))
for i, (arr, color, label) in enumerate(zip(data, colors, labels)):
if i == 0:
ax = ax_orig
else:
ax = ax_orig.twinx()
ax.spines['right'].set_position(('outward', 50 * (i - 1)))
ax.plot(arr, color=color, marker='o')
ax.set_ylabel(label, color=color)
ax.tick_params(axis='y', colors=color)
fig.tight_layout()
plt.show()
由于对象生成中使用的 dict 语法,我似乎无法使类似的东西在情节上起作用。我已经尝试提前通过循环生成轴字典并将它们传递给go.Layout,但没有成功。
如果有人能指出一种减少冗余的优雅方法,将不胜感激。
一切顺利,提前致谢。
【问题讨论】:
标签: python python-3.x plotly