2016-12-04 52 views
2

グラフのすべてのスライスがプログラム全体で一定のままである積み上げ棒グラフを作成しようとしていますが、df.plotを取得する方法がわかりませんカスタムパレットを使用する。積み上げ棒グラフ(Python)のカスタムカラーパレットの使用

このプログラムから20種類のレポートを作成する場合、フリーズは常に青色で、雹は常に白であることを確認します。

以下の例を見てください。まず、すべての気象値のカスタムパレットを作成しています。

私は「ペア」パレットを使用してプロットを行うと、それが正常に動作し、次のようになります。

enter image description here

そして、これは、カスタムパレットに

を使用したことを除いて、私が欲しいものは基本的です

01:しかし、私は

df.plot(kind='bar', stacked=True,colormap=pal_weather) 

を行うとき、私はで終わるエラーを取得します

C:\Anaconda3\lib\site-packages\pandas\tools\plotting.py in _get_standard_colors(num_colors, colormap, color_type, color) 
157    if colormap is None: 
158     raise ValueError("Colormap {0} is not recognized".format(cmap)) 
--> 159   colors = lmap(colormap, np.linspace(0, 1, num=num_colors)) 
    160  elif color is not None: 
    161   if colormap is not None: 

C:\Anaconda3\lib\site-packages\pandas\compat\__init__.py in lmap(*args, **kwargs) 
    116 
    117  def lmap(*args, **kwargs): 
--> 118   return list(map(*args, **kwargs)) 
    119 
    120  def lfilter(*args, **kwargs): 

TypeError: 'dict' object is not callable 

任意の助けも

ありがとうapopreciatedされるだろう!

サンプルコードは次のとおりです。

weather=('Day','Freeze', 'Wind', 'Flood', 'Quake', 'Hail') 

pal_weather = dict(zip(weather, sns.color_palette("cubehelix", n_colors=len(weather)))) 

data1 = [[ "M", 66386, 174296, 75131, 577908, 32015], 
    [ "T", 58230, 381139, 78045, 99308, 160454], 
    [ "W", 89135, 80552, 152558, 497981, 603535], 
    [ "T", 78415, 81858, 150656, 193263, 69638], 
    [ "F", 139361, 331509, 343164, 781380, 52269]] 


df = DataFrame(data=data1) 
df.columns = ('Day','Freeze', 'Wind', 'Flood', 'Quake', 'Hail') 
df.plot(kind='bar', stacked=True,colormap='Paired') 

答えて

1

私の解決策を試してください:

import matplotlib.pyplot as plt 
import matplotlib 
import seaborn as sns 
from matplotlib.colors import LinearSegmentedColormap 

matplotlib.style.use('ggplot') 
from pandas import DataFrame 

weather = ('Day', 'Freeze', 'Wind', 'Flood', 'Quake', 'Hail') 
colors = sns.color_palette("cubehelix", n_colors=len(weather)) 
cmap1 = LinearSegmentedColormap.from_list("my_colormap", colors) 

data1 = [["M", 66386, 174296, 75131, 577908, 32015], 
     ["T", 58230, 381139, 78045, 99308, 160454], 
     ["W", 89135, 80552, 152558, 497981, 603535], 
     ["T", 78415, 81858, 150656, 193263, 69638], 
     ["F", 139361, 331509, 343164, 781380, 52269]] 


df = DataFrame(data=data1) 
df.columns = weather 
df = df.set_index('Day') 
df.plot(kind='bar', stacked=True, colormap=cmap1) 
plt.show() 

出力:

これが動作しているようです

enter image description here

+0

が、少し混乱としてどのように色は実際に天気の値に関連付けられて..あなたは説明してください?それは本当に感謝します。 –

+0

@StumblingThroughDataScienceそれが正常に答えをマークしてください、 – eyllanesc

+0

市場をしてください...少し理由が混乱している..非常に感謝するでしょうヘルプ –

関連する問題