2017-01-07 19 views
6

Tôi đang cố gắng sử dụng một đối tượng matplotlib.colormap kết hợp với chức năng pandas.plot:sử dụng matplotlib colormap với gấu trúc dataframe.plot hoạt

import pandas as pd 
import matplotlib.pyplot as plt 
import matplotlib.cm as cm 

df = pd.DataFrame({'days':[172, 200, 400, 600]}) 
cmap = cm.get_cmap('RdYlGn') 
df['days'].plot(kind='barh', colormap=cmap) 
plt.show() 

Tôi biết rằng tôi phải bằng cách nào đó nói lên colormap phạm vi của các giá trị nó đang được cho ăn, nhưng tôi không thể tìm ra cách để làm điều đó khi sử dụng gấu trúc .plot() chức năng như âm mưu này() không chấp nhận các thông số vmin/vmax ví dụ.

Trả lời

6

Hình gấu trúc áp dụng bản đồ màu cho mỗi hàng có nghĩa là bạn nhận được cùng một màu cho khung dữ liệu một cột.

Để áp dụng màu sắc khác nhau để mỗi hàng của khung dữ liệu của bạn, bạn phải tạo ra một danh sách các màu sắc từ bản đồ màu lựa chọn:

import pandas as pd 
import matplotlib.pyplot as plt 
import matplotlib.cm as cm 
import numpy as np 

df = pd.DataFrame({'days':[172, 200, 400, 600]}) 
colors = cm.RdYlGn(np.linspace(0,1,len(df))) 
df['days'].plot(kind='barh', color=colors) 
plt.show() 

enter image description here

phương pháp khác là sử dụng matplotlib trực tiếp.

+0

Cảm ơn bạn đã giúp! Tôi đã kết thúc bằng cách sử dụng colors = cm.RdYlGn (np.logspace (0,1, len (df)) * df ['days']. Values ​​/ df ['days']. Max()) –

Các vấn đề liên quan