我想在每年的小圖表中顯示每個月的所有平均溫度。我的第一個問題是列印較冷(藍色)和較暖(分別為紅色)溫度的圖例,并為圖表本身賦予顏色。我的第二個問題與遍歷資料有關,最終出現以下錯誤:
TypeError: unsupported operand type(s) for /: 'tuple' and 'int'. 年數并不總是必須是偶數。我怎樣才能在回圈中很好地表示它?
我怎樣才能使圖表像下面的圖片一樣,包括彩色圖例和圖表。
我想要的是:
- 顯示所有年份以及每個月的所有平均溫度
- 彩色圖例和圖表
- (無論是 matloblib 還是 seaborn 都沒有關系)
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
d = {'year': [2001, 2001, 2001, 2001,
2002, 2002, 2002, 2002],
'month': [1, 2,3,4,
1,2,3,4],
'temperature': [10,20,15,20,
20,10,5,10]}
df = pd.DataFrame(data=d)
df.head()
fig, axs = plt.subplots(int(len(df.year.unique()) / 2), int(len(df.year.unique()) / 2))
for i in enumerate(df.year.unique()):
for j in range(int(i/2)):
for k in range(int(i/2)):
month = df['month'].unique()
temperature = df[df['year'] == i].groupby('month')['temperature'].mean().values
axs[j][k].bar(month, temperature)
plt.show()
TypeError: unsupported operand type(s) for /: 'tuple' and 'int'

uj5u.com熱心網友回復:
Seaborn 及其 facetgrid 集成圖可以讓您走得更遠。像這樣在行和列中繪制年份就像使用col="year", col_wrap=10.
在 seaborn 中,我們更喜歡使用支持 facetgrid 的繪圖函式,因為它們很靈活,就像在這個例子中用catplot.
這是一個例子,有一些隨機資料要填寫
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
years = np.arange(1990, 2022, 1).reshape((-1, 1))
months = np.array([5, 6, 7, 8]).reshape((1, 4))
years, months = (np.broadcast_arrays(years, months))
d = {'year': years.flatten(),
'month': months.flatten(),
'temperature': np.random.randint(0, 25, size=years.size),
}
df = pd.DataFrame(data=d)
fg = sns.catplot(data=df, kind='bar', x='month', y='temperature', hue='temperature',
palette='Reds', col='year', col_wrap=10,
height=2, aspect=0.8, dodge=False, ci=None);
fg.set_titles(col_template="{col_name}");
fg.legend.remove()
# Hackily add a colorbar too
norm = plt.Normalize(df.temperature.min(), df.temperature.max())
sm = plt.cm.ScalarMappable(cmap="Reds", norm=norm)
sm.set_array([])
cax = fg.figure.add_axes([0.96, .12, .02, .8])
fg.figure.colorbar(sm, cax=cax);
這fg是我們可以用來訪問單個軸并進行進一步調整的 facetgrid。將通過使用回圈訪問所有軸fg.axes。
這里的絕對弱點是 seaborn 不支持按值進行連續色調著色(這是撰寫本文時的一個未來專案,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/350086.html
標籤:Python 熊猫 matplotlib 图表 海生
下一篇:在一張圖中繪制多個時間序列列
