所以我有不同的大小和包含一些相同的和不同的字/元件的兩個列表:計數元件和堆疊從每個列表的結果的條形圖中
list1 = ["red", "blue", "yellow", "yellow", "blue", "green", "pink", "red"]
list2 = ["black", "black", "yellow", "red", "blue", "pink", "pink", "red", "purple", "white", "red", "orange", "red", "brown", "brown"]
如果我想指望有多少的話每一個在每個列表,並結合我說:
import collections
from collections import Counter
import numpy as np
import matplotlib.pyplot as plt
list_total = list1 + list2
c1 = Counter(list1)
c2 = Counter(list2)
c_all = Counter(list_total)
輸出結果(如果打印C的)則是:
Counter({'blue': 2, 'yellow': 2, 'red': 2, 'pink': 1, 'green': 1})
Counter({'red': 4, 'pink': 2, 'brown': 2, 'black': 2, 'blue': 1, 'purple': 1, 'yellow': 1, 'orange': 1, 'white': 1})
Counter({'red': 6, 'blue': 3, 'pink': 3, 'yellow': 3, 'brown': 2, 'black': 2, 'purple': 1, 'green': 1, 'orange': 1, 'white': 1})
所以原則上我可以繪製list_all
列表,我會得到一個條形圖,從左側最頻繁的詞開始,到圖表右側最不頻繁的詞。
對於我可能只是使用:
labels_total, values_total = zip(*Counter(list_total).most_common())
indexes = np.arange(len(labels_total))
plt.bar(indexes, values_total)
plt.show()
但我想這兩個列表(而不是組合列表)將被堆疊,所以可以看到從列出的絕大多數詞彙來源於等等。
這就是我卡住的地方。我似乎無法弄清楚如何去做。首先,這兩個名單中的單詞數量並不相同,其次有些單詞甚至沒有共享。因此,在這種情況下,list1
的blue
的值爲index = 0
,因爲這是該列表中最頻繁的單詞,但list2
的red
的值爲index = 0
,因爲這是該列表中最頻繁的單詞。因此,當試圖堆疊這些red
時,它們將被添加到blue
,因爲它們具有相同的索引 - 而這當然是錯誤的。 另一方面,這兩個列表甚至沒有相同的單詞,所以計數一切時的大小(索引號)也不相同,因爲list1
只有5個不同的單詞,而list2
有9個。所以你可以除非尺寸相同,否則不會將它們堆疊在條形圖中。
所以我現在有點迷路了。我可以通過.extend
函數通過添加一些零條目來擴展低維列表(僅作爲示例),但排序仍然是錯誤的,因爲它們將被添加/擴展到列表的末尾。
該編碼組合:
import collections
from collections import Counter
import numpy as np
import matplotlib.pyplot as plt
list1 = ["red", "blue", "yellow", "yellow", "blue", "green", "pink", "red"]
list2 = ["black", "black", "yellow", "red", "blue", "pink", "pink", "red", "purple", "white", "red", "orange", "red", "brown", "brown"]
list_total = list1 + list2
c1 = Counter(list1)
c2 = Counter(list2)
c_all = Counter(list_total)
labels_total, values_total = zip(*Counter(list_total).most_common())
indexes = np.arange(len(labels_total))
plt.bar(indexes, values_total)
plt.show()
我知道不應該感謝的人回覆,但是這真的工作就像一個魅力。謝謝。但是,我真的不確定它的實際功能是如何工作的。你可能會開導嗎? –