Участок boxplot и линия от панд - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь воспроизвести этот график - линейный график с блокпостом в каждой точке:

Imgur

Однако линейный график всегда начинается с начала координат, а не с первого тика x:

Imgur

Я собрал свою структуру данных в файле pandas, где каждый заголовок столбца k_e (оси x), а столбец - все точки данных.

Я строю среднее значение для каждого столбца и коробочного графика следующим образом:

df = df.astype(float)

_, ax = plt.subplots()
df.mean().plot(ax = ax)
df.boxplot(showfliers=False, ax=ax)

plt.xlabel(r'$k_{e}$')
plt.ylabel('Test error rate')
plt.title(r'Accuracies with different $k_{e}$')

plt.show()

Я ссылаюсь на ссылку ниже, и поэтому я прохожу позицию «топор», но это не помогает.

сюжетная линия над блокпостом с использованием панд DateFrame

РЕДАКТИРОВАТЬ: Вот минимальный пример:

test_errors_dict = dict () np.random.seed (40)

test_errors_dict[2] = np.random.rand(20)
test_errors_dict[3] = np.random.rand(20)
test_errors_dict[5] = np.random.rand(20)

df = pd.DataFrame(data=test_errors_dict)
df = df.astype(float)

_, ax = plt.subplots()
df.mean().plot(ax=ax)
df.boxplot(showfliers=False, ax=ax)

plt.show()

Результат: Imgur

Как показано выше, линейные графики не совпадают с рамками

1 Ответ

0 голосов
/ 05 мая 2018

Коробки находятся в позициях 1,2,3, а сюжет в позициях 2,3,5. Вы можете переиндексировать серию mean, чтобы также использовать позиции 1,2,3.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

test_errors_dict = dict()
np.random.seed(40)

test_errors_dict[2] = np.random.rand(20)
test_errors_dict[3] = np.random.rand(20)
test_errors_dict[5] = np.random.rand(20)

df = pd.DataFrame(data=test_errors_dict)
df = df.astype(float)

mean = df.mean()
mean.index = np.arange(1,len(mean)+1)

_, ax = plt.subplots()
mean.plot(ax=ax)
df.boxplot(showfliers=False, ax=ax)

plt.show()

enter image description here

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