[英]How to make a barchart with multiple datas using matplotlib
我正在嘗試使用 matplotlib 在 python 上制作條形圖,但即使我知道我想要做的事情很簡單,我也很掙扎。
我有相同長度的不同變量,想象一下 4 個列表:
run1 = [250,250,250,250]
run2 = [100,100,400,400]
run3 = [50,250,550,150]
run4 = [300,200,100,400]
而我想要的只是一個帶有 4*4 條形的圖形。 我想對每個列表的第一個元素(這里是 250,100,50,300)進行分組,並有四個不同顏色的條,其高度對應於 y 軸上的值。 然后放一個空格,再有 4 個帶有下一個值 (250,100,250,200) 的柱,依此類推。
我怎樣才能做到這一點 ?
謝謝你。
我想最好的方法是將您的數據列表轉換為 Pandas DataFrame 並繪制:
import matplotlib.pyplot as plt
import pandas as pd
run1 = [250,250,250,250]
run2 = [100,100,400,400]
run3 = [50,250,550,150]
run4 = [300,200,100,400]
runs = pd.DataFrame({'Run 1': run1, 'Run 2': run2,
'Run 3': run3, 'Run 4': run4})
runs.plot.bar()
plt.show()
這是一種方法。 首先將所有四個列表合並在一起,以利用 NumPy 索引從每個列表中獲取一個元素。
這里控制條形透明度的alpha
參數很重要,因為如果您使用不透明條形alpha=1
那么您將只看到最高的條形,因為其他條形將隱藏在它后面。 我使用了alpha=0.2
。 您可以使用任何您喜歡的值。
import numpy as np
import matplotlib.pyplot as plt
run1 = [250,250,250,250]
run2 = [100,100,400,400]
run3 = [50,250,550,150]
run4 = [300,200,100,400]
run_all = np.stack((run1, run2, run3, run4))
for i in range(len(run_all)):
plt.bar(range(4), run_all[i, :], alpha=0.2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.