1. ホーム
  2. python

[解決済み] ValueError("color kwarg must have one color per dataset")?

2022-02-06 16:15:23

質問

単純にデータをファイルに保存して読み出し、ヒストグラムを描画しているだけなのですが。しかし、実際には元のコードから何も変えていないのに、このような間違いがあるようです。何が問題なのか、どなたか教えてください。どうもありがとうございます。

以下は、hist() のコードです。

f_120 = plt.figure(1)
plt.hist(tfirst_list, bins=6000000, normed = True, histtype ="step", cumulative = True, color = 'g',label = 'first answer')
plt.axvline(x = 30, ymin = 0, ymax = 1, color = 'r', linestyle = '--', label = '30 min')
plt.axvline(x = 60, ymin = 0, ymax = 1, color = 'c', linestyle = '--', label = '1 hour')
plt.legend()

plt.ylabel('Percentage of answered questions')
plt.xlabel('Minutes elapsed after questions are posted')
plt.title('Cumulative histogram: time elapsed \n before questions receive answer (first 2 hrs)')
plt.ylim(0,1)
plt.xlim(0,120)

f_120.show()

f_2640 = plt.figure(2)
plt.hist(tfirst_list, bins=6000000, normed = True, histtype ="step", cumulative = True, color = 'g',label = 'first answer')
plt.axvline(x = 240, ymin = 0, ymax = 1, color = 'r', linestyle = '--', label = '4 hours')
plt.axvline(x = 1440, ymin = 0, ymax = 1, color = 'c', linestyle = '--', label = '1 day')
plt.legend(loc= 4)

plt.ylabel('Percentage of answered questions')
plt.xlabel('Minutes elapsed after questions are posted')
plt.title('Cumulative histogram: time elapsed \n before questions receive answer (first 48)')
plt.ylim(0,1)
plt.xlim(0,2640)

f_2640.show()

そして、そのエラーの全文があります。

 plt.hist(tfirst_list, bins=6000000, normed = True, histtype ="step",
          cumulative = True, color = 'b',label = 'first answer')

  File "C:\Python26\lib\site-packages\matplotlib\pyplot.py", line 2160, in hist
    ret = ax.hist(x, bins, range, normed, weights, cumulative, bottom, histtype,
                  align, orientation, rwidth, log, color, label, **kwargs)

  File "C:\Python26\lib\site-packages\matplotlib\axes.py", line 7606, in hist
    raise ValueError("color kwarg must have one color per dataset")

ValueError: color kwarg must have one color per dataset

解決方法は?

この問題は、tfirst_list を N 次元配列として定義しているためです。
例えば

tfirst_list = [1, 2, 3, 4, 5, 6, 7, 8]        #works
tfirst_list = [[1, 2, 3, 4], [5, 6, 7, 8]]    #produces the Exception you have

N次元データを使用する場合(N データセット を使用する場合) は color キーワード引数( カラー・クワーグ ) もN次元でなければならない ( 1データセットにつき1色 ). 例えば上のような場合

color = ['b', 'r']