Проблема, когда использовать `plt.subplots ()` для рисования `sns.swarmplot` - PullRequest
2 голосов
/ 20 мая 2019

Я хочу использовать plt.subplots() с диапазоном цикла для построения swarmplot, когда свойство plate имеет другое значение.
ТАК Я кодирую его простым графиком, и оно определенно верно.

#I just use i = 5 to specify a value
i = 5
sns.swarmplot(b[b['plate'] == 'BK0000' + str(i)]['plate'],\
              b[b['plate'] == 'BK0000' + str(i)]['tradeMoney'])

enter image description here

Но что-то не так, когда я пытаюсь кодировать его следующим образом:

nrows, ncols = 64, 1
fig, ax = plt.subplots(nrows=nrows, ncols=ncols, figsize=(9, 72), dpi=120)

month_cnt = 1
for i in range(nrows):
    i_ = i    
    if (i < 10):
        i = '0' + str(i)

    if (i == 32 | i == 58):
        continue    

    sns.swarmplot(b[b['plate'] == 'BK000' + str(i)]['plate'],\
                b[b['plate'] == 'BK000' + str(i)]['tradeMoney'],\
                ax=ax[i_])

    ax[i_].set_xlabel('BK000' + str(i))
    ax[i_].set_ylabel('tradeMoney')

И сообщения об ошибках озадачивают меняеще раз.

---------------------------------------------------------------------------
ValueError Traceback (последний последний вызов) в
12 sns.swarmplot (b [b ['plate'] == 'BK000' + str (i)] ['plate'], \
13 b [b ['plate'] == 'BK000' +str (i)] ['tradeMoney'], \
---> 14 ax = ax [i _])
15
16 ax [i _]. set_xlabel ('BK000' + str (i))

~ \ Anaconda3 \ lib \ site-packages \ seaborn \ categoryorical.py в Swarmplot (x, y, оттенок, данные, порядок, hue_order, dodge, orient, цвет, палитра, размер,Цвет края, ширина линии, топор, ** kwargs)
2975
2976 plotter = _SwarmPlotter (x, y, оттенок, данные, порядок, hue_order,
-> 2977 dodge, orient,цвет, палитра)
2978 <если топор отсутствует: <br>2979 ax = plt.gca ()

~ \ Anaconda3 \ lib \ site-packages \ seaborn \ categoryorical.py в init (self, x, y, hue, data, order, hue_order, dodge, orient, color, palette)
1213 "" "Инициализировать плоттер." ""
1214
self.create_variables (x, y, оттенок, данные, ориентация, порядок, hue_order) ->
1215 self.establish_colors (цвет, палитра, 1)
1216
1217 # Установить атрибуты объекта

~ \ Anaconda3 \ lib \ site-packages \ seaborn \ categoryorical.py в Estab_colors (self, color, palette, saturation) 313 # Определите серый цвет, который будет использоваться для линий, обрамляющих график
314 light_vals = [colorsys.rgb_to_hls(* c) 1 для c в rgb_colors]
-> 315 lum = min (light_vals) * .6
316 grey = mpl.colors.rgb2hex ((lum, lum, lum))
317

ValueError: min () arg - пустая последовательность

И все графики пустые.

b['plate'].unique()

array(['BK00001', 'BK00002', 'BK00003', 'BK00004', 'BK00005', 'BK00006',
       'BK00007', 'BK00008', 'BK00009', 'BK00010', 'BK00011', 'BK00012',
       'BK00013', 'BK00014', 'BK00015', 'BK00016', 'BK00017', 'BK00018',
       'BK00019', 'BK00020', 'BK00021', 'BK00022', 'BK00023', 'BK00024',
       'BK00025', 'BK00026', 'BK00027', 'BK00028', 'BK00029', 'BK00030',
       'BK00031', 'BK00033', 'BK00034', 'BK00035', 'BK00036', 'BK00037',
       'BK00038', 'BK00039', 'BK00040', 'BK00041', 'BK00042', 'BK00043',
       'BK00044', 'BK00045', 'BK00046', 'BK00047', 'BK00048', 'BK00049',
       'BK00050', 'BK00051', 'BK00052', 'BK00053', 'BK00054', 'BK00055',
       'BK00056', 'BK00057', 'BK00059', 'BK00060', 'BK00061', 'BK00062',
       'BK00063', 'BK00064', 'BK00065', 'BK00066'], dtype=object)

И я не могу исправить это с помощью сообщений об ошибках дажеЯ искал его раньше.
Может ли кто-нибудь мне помочь?
Заранее спасибо.

1 Ответ

1 голос
/ 20 мая 2019

Во время первой итерации появляется сообщение о том, что вы пытаетесь выполнить swarmplot на пустом кадре данных.Убедитесь, что BK00000 существует, или пропустите построение этого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...