Объединение plt.plot (x, y) с plt.boxplot()

#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:

Это то, что сработало для меня:

  1. поле построения-plot
  2. получить boxt-отобразить местоположения тиков по оси x
  3. используйте расположение галочек по оси 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-')