Seaborn graphing: Highlighting single data point i

2019-05-08 08:45发布

问题:

I'm trying to just highlight a single point on a Seaborn jointplot, but I'm coming up a little short. I'm able to plot the point from matplotlib - it's just not showing up in the same chart. What am I doing wrong? Thanks!

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import pandas as pd

#make some sample data
test_x = [i for i in range(10)]
test_y = [j for j in range(10)]

df = pd.DataFrame({'xs':test_x,
                  'ys':test_y})

#make Seaborn chart
g = sns.jointplot(x="xs", y="ys", data = df)


#sort the table to find the top y value
df = df.sort_values('ys', ascending = False)

#find coordinates of this point
highlight_x = df.iloc[0,0]
highlight_y = df.iloc[0,1]

#this is wrong - I want it to be in the same chart
plt.scatter(highlight_x, highlight_y, color = 'red')

plt.show()

回答1:

plt.scatter will plot in the current axes. The current axes is (apparently) the one on the right, not the central one. It would hence be better to directly specify the axes to which to plot. The central axes of a JointGrid g can be obtained via g.ax_joint:

g = sns.jointplot(...)
# ...
g.ax_joint.scatter(highlight_x, highlight_y, color = 'red')