我正在绘制一个多索引列DataFrame。
使用pandas DataFrame的.plot
方法指定要在secondary_y上绘制的列的语法是什么?
设置
import numpy as np
import pandas as pd
mt_idx = pd.MultiIndex.from_product([['A', 'B'], ['first', 'second']])
df = pd.DataFrame(np.random.randint(0, 10, size=(20, len(mt_idx))), columns=mt_idx)
我的尝试
df.plot(secondary_y=('B', 'second'))
df.plot(secondary_y='(B, second)')
以上都没有奏效,因为所有线都是在主y轴上绘制的。
答案 0 :(得分:2)
一种可能的解决方案是绘制每列,然后指定secondary=True
。按以下方式执行此操作需要您指定要绘制它们的轴:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
mt_idx = pd.MultiIndex.from_product([['A', 'B'], ['first', 'second']])
df = pd.DataFrame(np.random.randint(0, 10, size=(20, len(mt_idx))), columns=mt_idx)
df.A.plot(ax=ax)
df.B.plot(ax=ax, secondary_y=True)
plt.show()
答案 1 :(得分:2)
你可以drop the upper column index level。如果您不想修改原始数据框,可以在其副本上完成。
df2 = df.copy()
df2.columns = df2.columns.map('_'.join)
df2.plot(secondary_y=('B_second'))