我想生成成對的線圖,其中一個用作基準。
我可以用下面的代碼生成這樣的圖。

然而,我希望我可以有 6 對地塊,以阿爾漢格爾斯克作為每個地塊中的基準線。例如,其中之一將是這樣的:
.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data = {'year': ['1998','1998','1998','1998','1998','1998','1998','1999','1999','1999','1999','1999','1999','1999'],'region':['Adygea','Altai Krai','Amur Oblast','Arkhangelsk','Astrakhan','Bashkortostan','Belgorod','Adygea','Altai Krai','Amur Oblast','Arkhangelsk','Astrakhan','Bashkortostan','Belgorod'], 'sales':[8.8, 19.2,21.2, 10.6,18,17.5,23, 10, 17.8, 20.5, 12.6, 19.9, 16, 21]}
df1 = pd.DataFrame(data)
plt.figure(figsize=(12, 6))
palette1 = {c:'#079b51' if c=='Astrakhan' else 'grey' for c in df1['region'].unique()}
sns.lineplot(x= 'year', y='sales', data=df1,hue='region', palette=palette1) # or sns.relplot
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
我的代碼是可重現的。
我嘗試了以下方法,但顯然不起作用。我不確定如何遍歷我的 6 個區域中的每一個以比較 Astkrakhan 線圖。它可能應該包含一個條件,例如不等于/等于 'Astrakhan' ?謝謝你。
fig, axs = plt.subplots(2,3, figsize=(18,15))
for i in enumerate(df1.region.unique()):
sns.lineplot(x= 'year', y='sales', data=df1,ax = axs[i])
這帶來了 ValueError: could not interpret value Adygeafor parameter y。
df2 = df1.pivot(index='year', columns='region', values='sales') # converting the rows into columns
df_a = df2[['Arkhangelsk']]
df_r = df2.loc[:, ~df2.columns.isin(['Arkhangelsk'])] ## all other columns
fig, axes = plt.subplots(2, 3)
for col, ax in zip(df2.columns, axes.ravel()):
sns.lineplot(x = "year", y = col, data = df_a, ax = ax, linestyle="--")
sns.lineplot(x = "year", y = col, data = df_r, ax = ax)
uj5u.com熱心網友回復:
- 使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359787.html標籤:Python 熊猫 matplotlib 海生 子图
上一篇:用月份名稱標記xarray圖
下一篇:圖表可視化,一年多可視化點
