2017-09-03 628 views
1

我花了幾個小時試圖完成我認爲是一項簡單的任務,即在使用seaborn的同時將標籤添加到XY圖上。在x中添加標籤與seaborn的散點圖

這裏是我的代碼

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

df_iris=sns.load_dataset("iris") 

sns.lmplot('sepal_length', # Horizontal axis 
      'sepal_width', # Vertical axis 
      data=df_iris, # Data source 
      fit_reg=False, # Don't fix a regression line 
      size = 8, 
      aspect =2) # size and dimension 

plt.title('Example Plot') 
# Set x-axis label 
plt.xlabel('Sepal Length') 
# Set y-axis label 
plt.ylabel('Sepal Width') 

我想添加到每個點在圖上的文字在「種」欄。

我見過很多使用matplotlib但不使用seaborn的例子。

任何想法?謝謝。你可以這樣做

+0

你能提供的示例數據幀? 'z'是否包含X軸和Y軸的標籤信息?你想標註整個軸還是軸標記? Seaborn在引擎蓋下使用了Matplotlib - 你是說你不想使用'plt'方法,而是'sns'方法來標記你的地塊? –

+0

增加了樣本數據集。對不起 –

回答

4

的一種方法如下:

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

df_iris=sns.load_dataset("iris") 

ax = sns.lmplot('sepal_length', # Horizontal axis 
      'sepal_width', # Vertical axis 
      data=df_iris, # Data source 
      fit_reg=False, # Don't fix a regression line 
      size = 10, 
      aspect =2) # size and dimension 

plt.title('Example Plot') 
# Set x-axis label 
plt.xlabel('Sepal Length') 
# Set y-axis label 
plt.ylabel('Sepal Width') 


def label_point(x, y, val, ax): 
    a = pd.concat({'x': x, 'y': y, 'val': val}, axis=1) 
    for i, point in a.iterrows(): 
     ax.text(point['x']+.02, point['y'], str(point['val'])) 

label_point(df_iris.sepal_length, df_iris.sepal_width, df_iris.species, plt.gca()) 

enter image description here

+0

謝謝斯科特。它確實有陰謀,但對我來說,繪製的字符串看起來很奇怪。每個點都說了以下內容:「物種:setosa,名稱:3,dtype:object」任何想法如何解決? –

相關問題