Я пытаюсь создать точечную диаграмму с асимметричными полосами ошибок, но позиционирование для полосы ошибок слишком далеко. Это должно быть просто x_err = [[low_value_error], [max_value_error]], но я просто не могу заставить его работать. Я попытался найти другую подобную проблему, но все еще не могу найти решение.
def plot(mwant, rwant, fwant):
data_list = query()
plt.clf()
y_err, x_err, x_col, y_col, f_col = [], [], [], [], []
markers = ["v", "^", "<", ">", "8", "s", "h", "H"]
i = 0
# create plot from query
for row in data_list:
x1, x2, y1, y2, flux = row[12], mwant, row[15], rwant, row[18]
x_err_low, x_err_upper = row[14], row[13]
y_err_low, y_err_upper = row[17], row[16]
distance = sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
if distance < 10:
x_col.append(x1)
y_col.append(y1)
f_col.append(row[18])
x_err.append([row[14], row[13]])
y_err.append([row[17], row[16]])
plt.scatter([x1], y1, c=[flux], vmin=0, vmax=1000, marker=markers[i % 8])
# plt.errorbar(x1, y1, xerr=[[x_err_low], [x_err_upper]])
i += 1
# plot user's point
plt.scatter([mwant], rwant, c=[fwant], vmin=0, vmax=1000)
plt.errorbar(x_col,
y_col,
xerr=np.array(x_err).T,
yerr=np.array(y_err).T, # Requires 2xN array
linestyle="None")
# options
plt.xlabel("Planet Mass")
plt.ylabel("Planet Radius")
plt.colorbar(ticks=[0, 500, 1000])
return plt
, но позиционирование далеко: