我有一个 pandas 数据框,region
其中包含英国各地区随时间推移的公寓 ( Flat
) 和独立房产 ( Detached
) 的价格(列Month
)。我正在尝试获取公寓和独立物业的价格随时间变化的图,以便这些图有两个不同的 y 轴 - 都是平均价格,但比例不同。
我已经通过使用实现了这一点twinx()
,但是使用下面的代码我显然得到了两个数字。这些数字中的第一个正是我想要的,但是我得到了第二个空白图。我在下面附上了我想要的那种情节的截图。
删除第二条无花果线fig, ax2 = ...
时,出现错误NameError: name 'ax2' is not defined
。将线带ax2 = ax.twinx()
出循环也会产生错误AttributeError: 'numpy.ndarray' object has no attribute 'twinx'
。如果没有重复的空白图形,我似乎无法弄清楚如何让这个情节工作,非常感谢任何帮助。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
region_list = sorted(region['Area'].unique().tolist())
fig, ax = plt.subplots(nrows=len(region_list), figsize=(13.8,len(region_list)*7))
fig, ax2 = plt.subplots(nrows=len(region_list), figsize=(13.8,len(region_list)*7))
for i in region_list:
ind = region_list.index(i)
filt = region['Area'] == i
ax2[ind] = ax[ind].twinx()
ax[ind].plot(region.loc[filt]['Month'],region.loc[filt]['Flat'], color='red', marker='o')
ax[ind].set_ylabel('Average price of flats', color='red', fontsize=14)
ax2[ind].plot(region.loc[filt]['Month'],region.loc[filt]['Detached'],color='blue',marker='o')
ax2[ind].set_ylabel('Average price of detached properties',color='blue',fontsize=14)
ax[ind].set_title(i, size=14)
ax[ind].xaxis.set_tick_params(labelsize=10)
ax[ind].yaxis.set_tick_params(labelsize=10)
plt.tight_layout()