Search code examples
pythonpandaspython-ggplot

Is it possible to plot multiline chart on Python ggplot?


I need to plot 3 columns of a Pandas dataframe on python ggplot, with the same index. Is that possible?

Thank you


Solution

  • I'm assuming you want something in ggplot that replicates something like this in matplotlib.

    import pandas as pd
    df = pd.DataFrame({'a': range(10), 'b': range(5,15), 'c': range(7,17)})
    df.plot()
    

    ggplot expects the data to be in 'long' format, so you need to do a little reshaping, with melt. It also currently does not support plotting the index, so that needs to made into a column.

    from ggplot import ggplot, geom_line, aes
    import pandas as pd
    df = pd.DataFrame({'a': range(10), 'b': range(5,15), 'c': range(7,17)})
    
    df['x'] = df.index
    df = pd.melt(df, id_vars='x')
    
    ggplot(aes(x='x', y='value', color='variable'), df) + \
          geom_line()