受answer given here的启发,我想展示一个非常类似的图,每行的开始日期在左y轴,结束日期在右y轴
到目前为止,我试图在列表中保存开始日期和结束日期,并使用了twinx()
和set_yticks()
,但没有成功。下面的代码在链接中绘制相同的绘图(图例除外),但它不会修改y轴
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from datetime import datetime
ts = pd.date_range(end='2016-03-31', periods=250, freq='D')
np.random.seed([3, 1415])
a = np.random.choice(range(100), size=(2,10))
ranges = pd.DataFrame((a + np.array([[0], [150]])), columns=list('abcdefghij'))
df = pd.DataFrame(index=ts)
count = len(ranges.columns)
left_axis = []
right_axis = []
for colname, column in ranges.iteritems():
start_, end_ = column
df.loc[ts[start_] : ts[end_], colname] = count
left_axis.append(ts[start_])
right_axis.append(ts[end_])
count -= 1
fig, ax1 = plt.subplots()
ax1.plot(df)
ax1.set_yticks(range(10, 0, -1), left_axis)
ax2 = ax1.twinx()
ax2.set_yticks(range(10, 0, -1), right_axis)
plt.legend([])
plt.show()
任何帮助都将不胜感激。提前非常感谢
你需要使用
此外,为了确保右侧的记号与左侧的记号相匹配,您必须调整
ylim
,使两个轴上的记号相同相关问题 更多 >
编程相关推荐