我試圖用 Python/Matplotlib 創建一個條形圖。這個想法是匯入 csv,繪制條形圖,但根據串列中的條目選擇條形的顏色 - x 軸基本上包含一列年份,并且串列包含我想要的較短年份串列改變顏色。當我手動輸入單個值而不是串列(參見“color1”)時,它可以作業,但不能使用串列。我能做的最好的事情就是在另一個 np.array 中添加要查找的年份并進行比較,但是我從那個 python 中得到的所有資訊都警告我結果模棱兩可并且需要使用 a.any() - 我太過分了新手要真正理解。如果有人知道我在這里做錯了什么,任何幫助將不勝感激,特別是因為這是我 python/matplotlib 體驗的第二天。因此我不 t 真的想開始探索 pandas 作為一種選擇,這里的一些解決方案使用它。其他人則使用簡單的 python 串列。在這里,我需要使用一列 np.array 和一個 python 串列。
import matplotlib.pyplot as plt
import numpy as np
#import csv, first column is a list of years
with open("./data.csv") as data:
x,y,z = np.genfromtxt((line.replace(',', '.') for line in data), delimiter=";", usecols=(0,1,2), unpack=True)
width = 0.35 # width of bars
yearticks = [1990, 1998, 2008, 2021]
color1 = ["red" if i != 1991 else "blue" for i in x]
fig, ax = plt.subplots()
rects1 = ax.bar(x - width/2, y, width, label='y-axis', color=color1)
rects2 = ax.bar(x width/2, z, width, label='z-axis')
ax.set_ylabel('ylabel')
ax.set_title('xlabel')
ax.set_xticks(yearticks)
uj5u.com熱心網友回復:
這是你想要的?我更新了代碼,以便它檢查 x(year) 是否在串列中并將 x 條繪制為藍色/紅色。由于 x,y,z 資料不可用,因此使用隨機資料(前 3 行)。
x=np.random.randint(1990, 2020, size=(20))
y=np.random.randint(30, size=(20))
z=np.random.randint(30, 60, size=(20))
width = 0.35 # width of bars
yearticks = [1990, 1998, 2008, 2021]
color1 = ["red" if i in yearticks else "blue" for i in x]
fig, ax = plt.subplots(figsize=(20,5))
rects1 = ax.bar(x - width/2, y, width, label='y-axis', color=color1)
rects2 = ax.bar(x width/2, z, width, label='z-axis')
ax.set_ylabel('ylabel')
ax.set_title('xlabel')
ax.set_xticks(yearticks)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507384.html
標籤:Python 麻木的 matplotlib