2015-04-12 12 views
5

के साथ सहसंबंध गर्मी के साथ प्लॉटिंग मैं प्रत्येक लेबल के लिए डेटा बिंदुओं की विशेषताओं के सहसंबंध का प्रतिनिधित्व करने वाले हीटमैप्स के साथ एक एकल छवि बनाने की कोशिश कर रहा हूं। Seaborn के साथ मैं बहुतSeaborn FacetGrid

grouped = df.groupby('target') 
sns.heatmap(grouped.get_group('Class_1').corr()) 

एक तरह एकल वर्ग जो समझ में आता है कि मैं इस मिल के लिए एक हीटमैप बना सकते हैं:

Class_1 correlation heatmap

लेकिन फिर मैं की तरह सभी लेबल की सूची बनाने की कोशिश इसलिए:

g = sns.FacetGrid(df, col='target') 
g.map(lambda grp: sns.heatmap(grp.corr())) 

और उदासी मैं इस जो मेरे लिए कोई मतलब नहीं है मिलती है:

Failing attempt to plot all classes

+0

आप नौ हीटमैप्स चाहते हैं, प्रत्येक एक लक्ष्य के भीतर सहसंबंध दिखा रहा है? – cphlewis

+0

हां, मैंने @ सेफ्लेविस के जवाब को स्वीकार किया क्योंकि यह काम करता है लेकिन मुझे अब तक समुद्री तट के बारे में क्या पसंद है, यह है कि आप सामान को जल्दी और गंदे साजिश कर सकते हैं, इस अर्थ में कि आप इसे काफी हद तक बता सकते हैं "यह प्लॉट करें" और यह साथ आएगा कुछ कुछ। मेरा उपयोगकेस बहुत अधिक है: यह मेरे लिए बहुत महत्वपूर्ण नहीं है कि कैसे गर्मी की व्यवस्था की जाएगी या किस अक्ष को प्रदर्शित किया जाएगा, बस उस जानकारी को देखने के लिए जो मैंने पूछा था। तो काम करने के लिए लैम्ब्डा चीज प्राप्त करना बहुत उपयोगी होगा :) – fakedrake

+0

हाँ मैंने इसे पहुंचाया और बटन को ठीक से टैक्स टैप नहीं किया :) – fakedrake

उत्तर

5

अगर आप map के बजाय map_dataframe का उपयोग करते हैं तो आप इसे केवल समुद्री तट के साथ बहुत ही दृढ़ता से कर सकते हैं।

g = sns.FacetGrid(df, col='target') 
g.map_dataframe(lambda data, color: sns.heatmap(data.corr(), linewidths=0)) 

@mwaskom उसकी टिप्पणी में बताते हैं कि यह एक अच्छा विचार स्पष्ट रूप से रंग मैप की सीमा तय हो सकता है ताकि विभिन्न पहलुओं और सीधे तुलना की जा सकती। documentation का वर्णन करता है प्रासंगिक heatmap पैरामीटर:

vmin, VMAX: तैरता है, वैकल्पिक

मान रंग मैप एंकर करने के लिए, अन्यथा वे डेटा और अन्य कीवर्ड तर्क पर आधारित हैं। जब एक अलग डेटासेट अनुमानित है, तो इन मानों में से एक को अनदेखा किया जा सकता है।

4
FacetGrid बिना

, लेकिन एक स्तंभ में प्रत्येक समूह के लिए एक corr हीटमैप बनाने:

import pandas as pd 
import seaborn as sns 
from numpy.random import randint 
import matplotlib.pyplot as plt 


df = pd.DataFrame(randint(0,10,(200,12)),columns=list('abcdefghijkl')) 
grouped = df.groupby('a') 
rowlength = grouped.ngroups/2 # fix up if odd number of groups 
fig, axs = plt.subplots(figsize=(9,4), nrows=2, ncols=rowlength) 

targets = zip(grouped.groups.keys(), axs.flatten()) 
for i, (key, ax) in enumerate(targets): 
    sns.heatmap(grouped.get_group(key).corr(), ax=ax, 
       xticklabels=(i >= rowlength), 
       yticklabels=(i%rowlength==0), 
       cbar=False) # Use cbar_ax into single side axis 
    ax.set_title('a=%d'%key) 
plt.show() 

enter image description here हो सकता है कि वहाँ एक लैम्ब्डा सही ढंग से के माध्यम से g.facet_data() जनरेटर से डेटा पारित करने के लिए स्थापित करने के लिए एक रास्ता है heatmap पर जाने से पहले corr

संबंधित मुद्दे