Reputation: 137
I am trying to plot 2 columns of a dataframe (one as a bar plot and the other as a scatterplot). I can get this working with Matplotlib, but I want it with Seaborn.
This is the code:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
df = pd.DataFrame({'Announced Year': [2016, 2017, 2018, 2019],
'Amount Awarded': [12978216, 11582629, 11178338, 11369267],
'Number of Awarded': [18, 14, 13, 13]})
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
sns.scatterplot(x="Announced Year", y="Number of Awarded", data=df, ax=ax2)
sns.barplot(x="Announced Year", y="Amount Awarded", data=df, ax=ax1)
fig.tight_layout() # otherwise the right y-label is slightly clipped
plt.title('2016 to 2019 Announcements')
Upvotes: 5
Views: 10632
Reputation: 586
You can plot with shared x-axis using x=np.arange(0,len(df))
instead of x="Announced Year"
for scatterplot.
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
sns.barplot(x="Announced Year", y="Amount Awarded", data=df, ax=ax2, alpha=.5)
sns.scatterplot(x=np.arange(0,len(df)), y="Number of Awarded", data=df, ax=ax1)
fig.tight_layout() # otherwise the right y-label is slightly clipped
plt.title('2016 to 2019 Announcements')
Upvotes: 5