Я хотел бы построить свои данные, подобные следующему рисунку, с отображением медианы в каждой ячейке и значений 25 и 75 процентов. [Сплошная линия и открытые кружки показывают медианные значения в каждой ячейке, а пунктирные линии показывают 25 значения% и 75%.]
У меня есть пример данных. И мне это понравилось, чтобы получился похожий сюжет
import numpy as np
import matplotlib.pyplot as plt
from astropy.table import Table
data=Table.read('sample_data.fits')
# Sample data
X=data['density']
Y=data['lineflux']
total_bins = 15
bins = np.linspace(min(X),max(X), total_bins)
delta = bins[1]-bins[0]
idx = np.digitize(X,bins)
running_median = [np.median(Y[idx==k]) for k in range(total_bins)]
plt.plot(X,Y,'.')
plt.plot(bins-delta/2,running_median,'--r',marker='o',fillstyle='none',markersize=20,alpha=1)
plt.xlabel('log $\delta_{5th}[Mpc^{-3}]$')
plt.ylabel('log OII[flux]')
plt.loglog()
plt.axis('tight')
plt.show()
Есть большой зачет. Я также меняю размер корзины, но смещение получилось большим. Как правильно построить график и как включить в график значения 25 и 75 процентов, как на предыдущем рисунке.