#python #numpy #matplotlib #plot #boxplot
#python #numpy #matplotlib #построение #boxplot
Вопрос:
Я пытаюсь объединить обычный matplotlib.pyplot plt.plot(x,y)
с переменной y
как функцией переменной x
с boxplot. Однако мне нужен boxplot только в определенных (переменных) местах x
, но, похоже, это не работает в matplotlib?
Ответ №1:
Вы хотите что-то подобное? positions
kwarg to boxplot
позволяет размещать графики в произвольных положениях.
import matplotlib.pyplot as plt
import numpy as np
# Generate some data...
data = np.random.random((100, 5))
y = data.mean(axis=0)
x = np.random.random(y.size) * 10
x -= x.min()
x.sort()
# Plot a line between the means of each dataset
plt.plot(x, y, 'b-')
# Save the default tick positions, so we can reset them...
locs, labels = plt.xticks()
plt.boxplot(data, positions=x, notch=True)
# Reset the xtick locations.
plt.xticks(locs)
plt.show()
Комментарии:
1. Да, спасибо, это именно то, что я хотел. Я всегда пытался сделать что-то вроде plt.plot ([x, y]) в boxplot, но потерпел неудачу… кажется, я неправильно понимаю kwarg
positions
2. 1 за то, что показал, как сохранить местоположения xtick. При работе с осями команды являются
locs = ax.get_xticks()
иax.set_xticks(locs)
3. В дополнение к моему комментарию выше на самом деле также нужно добавить
ax.set_xticklabels(locs)
, чтобы получить правильные метки.4. Отличный ответ без необходимости использовать seaborn! Отлично!
Ответ №2:
Это то, что сработало для меня:
- поле построения-plot
- получить boxt-отобразить местоположения тиков по оси x
- используйте расположение галочек по оси x в виде прямоугольника в качестве значений по оси x для линейного графика
# Plot Box-plot
ax.boxplot(data, positions=x, notch=True)
# Get box-plot x-tick locations
locs=ax.get_xticks()
# Plot a line between the means of each dataset
# x-values = box-plot x-tick locations
# y-values = means
ax.plot(locs, y, 'b-')