2016-08-12 13 views
7

साथ बड़ा के आकार बनाने मैं Seabornएक हीटमैप Seaborn

df1.index = pd.to_datetime(df1.index) 
df1 = df1.set_index('TIMESTAMP') 
df1 = df1.resample('30min').mean() 
ax = sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5) 

साथ एक हीटमैप बनाने लेकिन probleme जब dataframe में डेटा की बहुत वहाँ है हीटमैप बहुत छोटा हो जाएगा और मूल्य के अंदर नहीं शुरू संलग्न छवि में स्पष्ट की तरह।

मैं गर्मी के आकार को और अधिक बड़ा कैसे बदल सकता हूं? धन्यवाद enter image description here

संपादित

मैं कोशिश:

df1.index = pd.to_datetime(df1.index) 
fig, ax = plt.subplots(figsize=(10,10))   # Sample figsize in inches 
sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5, ax=ax) 
df1 = df1.set_index('TIMESTAMP') 
df1 = df1.resample('1d').mean() 
ax = sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5) 

लेकिन मैं इस त्रुटि मिलती है:

KeyError         Traceback (most recent call last) 
C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\indexes\base.py in get_loc(self, key, method, tolerance) 
    1944    try: 
-> 1945     return self._engine.get_loc(key) 
    1946    except KeyError: 

pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4154)() 

pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4018)() 

pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12368)() 

pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12322)() 

KeyError: 'TIMESTAMP' 

During handling of the above exception, another exception occurred: 

KeyError         Traceback (most recent call last) 
<ipython-input-779-acaf05718dd8> in <module>() 
     2 fig, ax = plt.subplots(figsize=(10,10))   # Sample figsize in inches 
     3 sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5, ax=ax) 
----> 4 df1 = df1.set_index('TIMESTAMP') 
     5 df1 = df1.resample('1d').mean() 
     6 ax = sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5) 

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\frame.py in set_index(self, keys, drop, append, inplace, verify_integrity) 
    2835     names.append(None) 
    2836    else: 
-> 2837     level = frame[col]._values 
    2838     names.append(col) 
    2839     if drop: 

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key) 
    1995    return self._getitem_multilevel(key) 
    1996   else: 
-> 1997    return self._getitem_column(key) 
    1998 
    1999  def _getitem_column(self, key): 

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\frame.py in _getitem_column(self, key) 
    2002   # get column 
    2003   if self.columns.is_unique: 
-> 2004    return self._get_item_cache(key) 
    2005 
    2006   # duplicate columns & possible reduce dimensionality 

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\generic.py in _get_item_cache(self, item) 
    1348   res = cache.get(item) 
    1349   if res is None: 
-> 1350    values = self._data.get(item) 
    1351    res = self._box_item_values(item, values) 
    1352    cache[item] = res 

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\internals.py in get(self, item, fastpath) 
    3288 
    3289    if not isnull(item): 
-> 3290     loc = self.items.get_loc(item) 
    3291    else: 
    3292     indexer = np.arange(len(self.items))[isnull(self.items)] 

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\indexes\base.py in get_loc(self, key, method, tolerance) 
    1945     return self._engine.get_loc(key) 
    1946    except KeyError: 
-> 1947     return self._engine.get_loc(self._maybe_cast_indexer(key)) 
    1948 
    1949   indexer = self.get_indexer([key], method=method, tolerance=tolerance) 

pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4154)() 

pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4018)() 

pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12368)() 

pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12322)() 

KeyError: 'TIMESTAMP' 

संपादित

TypeError         Traceback (most recent call last) 
<ipython-input-890-86bff697504a> in <module>() 
     2 df2.resample('30min').mean() 
     3 fig, ax = plt.subplots() 
----> 4 ax = sns.heatmap(df2.iloc[:, 1:6:], annot=True, linewidths=.5) 
     5 ax.set_yticklabels([i.strftime("%Y-%m-%d %H:%M:%S") for i in df2.index], rotation=0) 

C:\Users\Demonstrator\Anaconda3\lib\site-packages\seaborn\matrix.py in heatmap(data, vmin, vmax, cmap, center, robust, annot, fmt, annot_kws, linewidths, linecolor, cbar, cbar_kws, cbar_ax, square, ax, xticklabels, yticklabels, mask, **kwargs) 
    483  plotter = _HeatMapper(data, vmin, vmax, cmap, center, robust, annot, fmt, 
    484       annot_kws, cbar, cbar_kws, xticklabels, 
--> 485       yticklabels, mask) 
    486 
    487  # Add the pcolormesh kwargs here 

C:\Users\Demonstrator\Anaconda3\lib\site-packages\seaborn\matrix.py in __init__(self, data, vmin, vmax, cmap, center, robust, annot, fmt, annot_kws, cbar, cbar_kws, xticklabels, yticklabels, mask) 
    165   # Determine good default values for the colormapping 
    166   self._determine_cmap_params(plot_data, vmin, vmax, 
--> 167          cmap, center, robust) 
    168 
    169   # Sort out the annotations 

C:\Users\Demonstrator\Anaconda3\lib\site-packages\seaborn\matrix.py in _determine_cmap_params(self, plot_data, vmin, vmax, cmap, center, robust) 
    202        cmap, center, robust): 
    203   """Use some heuristics to set good defaults for colorbar and range.""" 
--> 204   calc_data = plot_data.data[~np.isnan(plot_data.data)] 
    205   if vmin is None: 
    206    vmin = np.percentile(calc_data, 2) if robust else calc_data.min() 

TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' 

उत्तर

17

tuplewidth, height पैरामीटर को दिखाकर आप figsize को बदलकर figsize बदल सकते हैं।

import matplotlib.pyplot as plt 

fig, ax = plt.subplots(figsize=(10,10))   # Sample figsize in inches 
sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5, ax=ax) 

संपादित

मैं तुम्हारा जहां TIMESTAMP के रूप में सूचकांक स्थापित करने के लिए किया था के एक ऐसे ही सवाल का जवाब याद है। तो, फिर यदि आप नीचे की तरह कुछ कर सकता है:

df = df.set_index('TIMESTAMP') 
df.resample('30min').mean() 
fig, ax = plt.subplots() 
ax = sns.heatmap(df.iloc[:, 1:6:], annot=True, linewidths=.5) 
ax.set_yticklabels([i.strftime("%Y-%m-%d %H:%M:%S") for i in df.index], rotation=0) 

dataframe आप पोस्ट की head के लिए, साजिश लगेगा जैसे:

enter image description here

+1

धन्यवाद यह काम करता है। आखिरी सवाल कृपया; मैं TImesStamp की तिथियों के प्रारूप को कैसे बदल सकता हूं। मैं इस लाइन को जोड़ता हूं: ax.set_yticklabels ([i.strftime ("% वाई-% एम-% डी% एच:% एम:% एस") मैं df1.TIMESTAMP में, घूर्णन = 0) लेकिन यह काम नहीं करता है ! – Bio

+1

@ बायो: कृपया मेरे संपादित उत्तर पर एक नज़र डालें। –

+0

कृपया मेरे संपादित पोस्ट पर एक नज़र डालें। बड़ा धन्यवाद – Bio

1

fmt: स्ट्रिंग, वैकल्पिक एनोटेशन

जोड़ते समय उपयोग करने के लिए स्ट्रिंग स्वरूपण कोड

मूल: Seaborn docs

घ के साथ fmt पैरामीटर जोड़ें पूर्णांक के रूप में यह दिखाने के लिए

ax = sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5, fmt="d") 
2

sns.heatmap से पहले plt.figure(figsize=(16,5)) जोड़ सकते हैं और figsize संख्या के साथ चारों ओर खेलने तक आप इच्छित आकार मिलता है

... 

plt.figure(figsize = (16,5)) 

ax = sns.heatmap(df1.iloc[:, 1:6:], annot=True, linewidths=.5) 
+0

जहां तक ​​मुझे पता है, plt.figure सभी समुद्री तटों में सही काम करना चाहिए? जब मैं इसे एक हीटमैप के लिए करता हूं तो यह काम करता है, मैं इसे अपनी अगली साजिश (जो एक जोड़ीप्लॉट) के लिए कोशिश करता हूं और यह काम नहीं करता है। आपको क्या लगता है कि समस्या हो सकती है? मैं इसे एक जिप्टर नोटबुक में कर रहा हूं – deadcode

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