0
目前,我有一個腳本這使得下面的柱狀圖最高值:排序x軸值matplotlib直方圖從最低到使用python
基於此數據:
{"first":"A","second":"1","third":"2"}
{"first":"B","second":"1","third":"2"}
{"first":"C","second":"2","third":"2"}
{"first":"D","second":"3","third":"2"}
{"first":"E","second":"3","third":"2"}
{"first":"F","second":"3","third":"2"}
{"first":"G","second":"3","third":"2"}
{"first":"H","second":"4","third":"2"}
{"first":"I","second":"4","third":"2"}
{"first":"J","second":"0","third":"2"}
{"first":"K","second":"0","third":"2"}
{"first":"L","second":"0","third":"2"}
{"first":"M","second":"0","third":"2"}
{"first":"N","second":"0","third":"2"}
這是呈現數據的直方圖的代碼:
with open('toy_two.json', 'rb') as inpt:
dict_hash_gas = list()
for line in inpt:
resource = json.loads(line)
dict_hash_gas.append({resource['first']:resource['second']})
# Count up the values
counts = collections.Counter(v for d in dict_hash_gas for v in d.values())
counts = counts.most_common()
# Apply a threshold
threshold = 4275
counts = [list(group) for val, group in itertools.groupby(counts, lambda x: x[1] > threshold) if val]
print(counts)
它被描繪這樣的:
# Transpose the data to get the x and y values
labels, values = zip(*counts[0])
indexes = np.arange(len(labels))
width = 1
plt.bar(indexes, values, width)
plt.xticks(indexes + width * 0.5, labels)
plt.show()
的問題是,如何重新安排x軸,這樣他們才能從低到高,即
0, 1, 3, 4
,但是,從實際數據集預處理很重要 - 因爲它比玩具例子更大更復雜,所以 - 之後它不再是JSON格式。有數據通過預處理流水線後通過數據實現這一點嗎? –
在這種情況下,您可以考慮構建一個臨時數據框,按標籤排序然後繪圖。請參閱編輯。 –