0

I have a data frame as shown below

product    bought_date     Monthly_profit     Average_discout
A          2016            85000000           5
A          2017            55000000           5.6
A          2018            45000000           10
A          2019            35000000           9.8
B          2016            75000000           5
B          2017            55000000           4.6
B          2018            75000000           11
B          2019            45000000           9.8
C          2016            95000000           5.3
C          2017            55000000           5.1
C          2018            50000000           10.2
C          2019            45000000           9.8

From the above I would like to plot 3 subplots.

one for product A, B and C.

In each subplot there should be 3 line plot, where

X axis = bought_date
Y axis1 = Monthly_profit
Y axis2 = Average_discout

I tried below code.

sns.set(style = 'darkgrid')
sns.lineplot(x = 'bought_date', y  = 'Monthly_profit', style = 'product', 
             data = df1, markers = True, ci = 68, err_style='bars')

1 Answer 1

1

Variant 1: using subplots and separating the data manually

products = df['product'].unique()
fig,ax = plt.subplots(1,len(products),figsize=(20,10))
for i,p in enumerate(products):
    sns.lineplot('bought_date', 'Monthly_profit', data=df[df['product']==p], ax=ax[i])
    sns.lineplot('bought_date', 'Average_discout', data=df[df['product']==p], ax=ax[i].twinx(), color='orange')
    ax[i].legend([f'Product {p}'])

Variant 2: using FacetGrid:

def lineplot2(x, y, y2, **kwargs):
    ax = sns.lineplot(x, y, **kwargs)
    ax2 = ax.twinx()
    sns.lineplot(x, y2, ax=ax2, **kwargs)

g = sns.FacetGrid(df, col='product')
g.map(lineplot2, 'bought_date', 'Monthly_profit', 'Average_discout', marker='o')

These are just general rough examples, you'll have to tidy up axis labels etc. as needed.

Sign up to request clarification or add additional context in comments.

3 Comments

Can we add legend for each line plot
ax[i].legend([f'Product {p}'])
in which line, pls help me in increasing the size this plot.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.