Создайте 4 разброса субплотов из одного кадра данных - PullRequest
0 голосов
/ 11 марта 2020

У меня есть база данных, которая содержит наблюдения, а затем для каждого анализа PCA - PCA 1 и PCA 2, которые были рассчитаны для разных дат: enter image description here

Моя цель: создать 4 вспомогательных участка разброса на основе этих дат и раскрасить их в разные цвета на основе столбца "line_leg".

Что я сделал до сих пор:

Создал 4 вспомогательных участка разброса -

fig, axes = plt.subplots(nrows=2, ncols=2,figsize=(16, 10))

enter image description here

и попытался построить топор [0] [0] + раскрасить его следующим образом:


targets = ['100 D','100 C','70 D','70 C','40 D', '40 C']
colors = ['tab:blue','tab:green','tab:purple','tab:cyan','tab:red','tab:orange']
#colors = ['lawngreen','royalblue','tab:green','midnightblue','tab:red','tab:orange']
for target, color in zip(targets,colors):
    #goes to line. and check of 1,2,3,4,5,6 are true or false, 6 times total, and if true gives the color.
    indicesToKeep = df_PCA_all['line_leg'] == target
    ax[0][0].scatter(df_PCA_all.iloc[:,3:5].loc[indicesToKeep, 'PCA1_19']
               , df_PCA_all.iloc[:,3:5].loc[indicesToKeep, 'PCA2_19']
               , c = color
               , s = 100
               , label=target)
ax.legend(targets)
ax.grid()

Но я получил ошибку:

TypeError: объект 'AxesSubplot' не подходит для подписки

Моя конечная цель - получить эти 4 цифры График с данными из df, каждый рисунок показывает разные даты (19,21,28,03), и окрашены в соответствии со значением line_leg.

1 Ответ

1 голос
/ 11 марта 2020

Вы массив осей называется axes, а не ax. Вам следует позвонить axes[0,0].scatter(...)

...