python生成柱形图

python生成柱形图
生成下面这样的图表,怎样写样式,我写的有点问题

要求的样式

img

这是我写的

img

import csv  # 导入csv模块
from datetime import datetime
 
import matplotlib.pyplot as plt

filename = r'D:\python\fallraw_7041JA26clear.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)  # 返回文件的下一行,在这便是首行,即文件头
    print(header_row)
 
#for index, column_header in enumerate(header_row):  # 对列表调用了 enumerate()来获取每个元素的索引及其值,方便我们提取需要的数据列
 #   print(index, column_header)
    print(header_row[0])
    # 从文件中获取最高温度
    dates, index, times,temperature, humidity, winddirection, windpower, rains, rains7041JA23, waterlevels7041JA23, rains7041JA24,waterlevels7041JA24, waterlevels= [], [], [], [], [], [], [], [], [], [], [], [], []
    current_date=[]
    i=0
    for row in reader:
        
        current_date_ = datetime.strptime(row[0], '%Y-%m-%d %H:%M')
        current_date.append(current_date_)
       # print(row)
        dates.append(row[0])
        index.append(row[1])
        times.append(row[2])
        temperature.append(row[3])
        humidity.append(row[4])
        winddirection.append(row[5])
        windpower.append(row[6])
        rains.append(row[7])
        rains7041JA23.append(row[8])
        waterlevels7041JA23.append(row[9])
        rains7041JA24.append(row[10])
        waterlevels7041JA24.append(row[11])
        waterlevels.append(row[12])
        #print(row)
        i+=1
        if i==55:
            break
        #high = int(row[5])
        #dates.append(current_date)
        #highs.append(high)
    #print(waterlevels)
plt.bar(temperature, dates,color='grey')
plt.show()
# 根据最高温度绘制图形
'''


plt.style.use('strptime')
fig, ax = plt.subplot()
ax.plot(dates,temperature, c='red')
print(dates)
print(current_date[5].strftime('%Y-%m-%d'))
print(type(dates[0]))
# 设置图形的格式
ax.set_title("text1", fontproperties="SimHei", fontsize=24)
ax.set_xlabel('', fontproperties="SimHei", fontsize=16)
fig.autofmt_xdate()
ax.set_ylabel("text2", fontproperties="SimHei", fontsize=16)
ax.tick_params(axis='both', which='major', labelsize=16)

plt.show()
'''

用subplots吧,类似下面示例代码这样:

def plot_3x3(df, title):
    fig, axs = plt.subplots(3, 3, figsize=(20, 20))
    fig.suptitle(title, fontsize=16)
    df.plot(kind='bar', ax=axs[0, 0], x='date', y='temperature')
    df.plot(kind='bar', ax=axs[0, 1], x='date', y='humidity')
    df.plot(kind='bar', ax=axs[0, 2], x='date', y='winddirection')
    df.plot(kind='bar', ax=axs[1, 0], x='date', y='windpower')
    df.plot(kind='bar', ax=axs[1, 1], x='date', y='rains')
    df.plot(kind='bar', ax=axs[1, 2], x='date', y='rains7041JA23')
    df.plot(kind='bar', ax=axs[2, 0], x='date', y='waterlevels7041JA23')
    df.plot(kind='bar', ax=axs[2, 1], x='date', y='rains7041JA24')
    df.plot(kind='bar', ax=axs[2, 2], x='date', y='waterlevels7041JA24')
    plt.show()

我之前做过类似的东西,可以参考一下
https://blog.csdn.net/weixin_43643587/article/details/120353275