2012-07-24 19 views
5

मेरे पास एक पांडस डेटाफ्रेम है, और मैं इसे matplotlib तालिका के रूप में प्लॉट करना चाहता हूं। अब तक मैं उस भाग निम्न कोड के साथ काम किया है:matplotlib: रंग तालिका-सेल पृष्ठभूमि में एक रंगरूप का उपयोग

import numpy as np 
randn = np.random.randn 
from pandas import * 

idx = Index(arange(1,11)) 
df = DataFrame(randn(10, 5), index=idx, columns=['A', 'B', 'C', 'D', 'E']) 
vals = np.around(df.values,2) 

fig = plt.figure(figsize=(15,8)) 
ax = fig.add_subplot(111, frameon=True, xticks=[], yticks=[]) 

the_table=plt.table(cellText=vals, rowLabels=df.index, colLabels=df.columns, 
        colWidths = [0.03]*vals.shape[1], loc='center') 

table_props = the_table.properties() 
table_cells = table_props['child_artists'] 

clm = cm.hot(vals) 

for cell in table_cells: 
    cell.set_height(0.04) 
    # now i would like to set the backgroundcolor of the cell 

इस के अंत में मैं रंग मैप के अनुसार सेल के पृष्ठभूमि रंग सेट करना चाहते हैं - लेकिन मैं कैसे यह clm में लग रहे हो एक सूचकांक के बिना सरणी?

एक और सवाल: क्या मैं किसी भी तरह तालिका में एक प्रारूप स्ट्रिंग पास कर सकता हूं, ताकि यह पाठ को दशमलव दशमलव पर स्वरूपित कर सके?

किसी भी संकेत की सराहना की, एंडी

उत्तर

9

आप अपने डेटा को सामान्य बनाने में एक मानक के अनुसार वस्तु बनाने के लिए plt.normalize() का उपयोग कर सकते हैं, और रंग प्राप्त करने के लिए रंग मैप वस्तु को सामान्य डेटा गुजरती हैं।

plt.table() में सेलकोलर्स तर्क है जो प्रत्येक सेल के पृष्ठभूमि रंग को सेट करता है।

क्योंकि cm.hot colormap न्यूनतम मान के लिए काले रंग का उपयोग करता है, सामान्यीकृत ऑब्जेक्ट बनाते समय मैंने मूल्य सीमा में वृद्धि की।

from matplotlib import pyplot as plt 
import numpy as np 
randn = np.random.randn 
from pandas import * 

idx = Index(arange(1,11)) 
df = DataFrame(randn(10, 5), index=idx, columns=['A', 'B', 'C', 'D', 'E']) 
vals = np.around(df.values,2) 
normal = plt.normalize(vals.min()-1, vals.max()+1) 

fig = plt.figure(figsize=(15,8)) 
ax = fig.add_subplot(111, frameon=True, xticks=[], yticks=[]) 

the_table=plt.table(cellText=vals, rowLabels=df.index, colLabels=df.columns, 
        colWidths = [0.03]*vals.shape[1], loc='center', 
        cellColours=plt.cm.hot(normal(vals))) 

enter image description here

0

एंडी कोड काम कर रहे:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

# sudo apt-get install python-pandas 
# sudo apt-get install python-matplotlib 
# 
# python teste.py 

from matplotlib import pyplot 
from matplotlib import cm 

import numpy 

from pandas import * 

idx = Index(numpy.arange(1, 11)) 

df = DataFrame(
     numpy.random.randn(10, 5), 
     index=idx, 
     columns=['A', 'B', 'C', 'D', 'E'] 
    ) 

vals = numpy.around(df.values, 2) 

normal = pyplot.normalize(vals.min()-1, vals.max()+1) 

fig = pyplot.figure(figsize=(15, 8)) 

ax = fig.add_subplot(111, frameon=True, xticks=[], yticks=[]) 

the_table = pyplot.table(
       cellText=vals, 
       rowLabels=df.index, 
       colLabels=df.columns, 
       colWidths = [0.03]*vals.shape[1], 
       loc='center', 
       cellColours=pyplot.cm.hot(normal(vals)) 
      ) 

pyplot.show() 

यहाँ कोड है

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