Matplotlib开关X和Y轴

时间:2018-06-26 21:40:34

标签: python pandas matplotlib

我有一个看似简单的问题,我不知道。下面的代码生成下面的图表。

df = pd.DataFrame({.5:[0,0,0], .6:[1,2,1], .7:[7,8,6], .8:[23,33,21], .9: 
[84,126,76] }, index=['Desktop', 'Mobile', 'Table'])
df.T.plot(figsize=(10,10))

enter image description here

这几乎是我想要的,但是我需要在Y轴上显示百分位数,在X轴上显示天数。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要将数据清理为tidy格式,然后指定matplotlib轴以及显式的x-和y-值:

from matplotlib import pyplot
import pandas

df = pandas.DataFrame({
    0.5: [0, 0, 0],
    0.6: [1, 2, 1],
    0.7: [7, 8, 6],
    0.8: [23, 33, 21],
    0.9: [84, 126, 76]
}, index=['Desktop', 'Mobile', 'Tablet'])

fig, ax = pyplot.subplots()
groups = (
    df.T
      .stack()
      .rename_axis(['pctile', 'device'])
      .to_frame('days')
      .reset_index()
      .groupby(by=['device'])
)
for device, g in groups:
    g.plot.line(ax=ax, x='days', y='pctile', label=device)

enter image description here