Обратная ось Y в PyPlot



У меня есть график точечной диаграммы с кучей случайных координат x, y. В настоящее время ось Y начинается с 0 и доходит до максимального значения. Я хотел бы, чтобы ось Y начиналась с максимального значения и доходила до 0.



points = [(10,5), (5,11), (24,13), (7,8)]    
x_arr = []
y_arr = []
for x,y in points:
x_arr.append(x)
y_arr.append(y)
plt.scatter(x_arr,y_arr)
758   7  

7 ответов:

появился новый API, который делает это еще проще.

plt.gca().invert_xaxis()

и/или

plt.gca().invert_yaxis()

DisplacedAussieответ правильный, но обычно более короткий метод заключается в том, чтобы просто изменить одну ось в вопросе:

plt.scatter(x_arr, y_arr)
ax = plt.gca()
ax.set_ylim(ax.get_ylim()[::-1])

здесь gca() функция возвращает текущий экземпляр Axes и [::-1] переворачивает список.

использовать matplotlib.pyplot.axis ()

axis([xmin, xmax, ymin, ymax])

Так что вы могли бы добавить что-то вроде этого в конце:

plt.axis([min(x_arr), max(x_arr), max(y_arr), 0])

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

Если вы находитесь в ipython в pylab режим, затем

plt.gca().invert_yaxis()
show()

the show() требуется, чтобы обновить текущую цифру.

другой подобный метод к тем описанным выше использовать plt.ylim например:

plt.ylim(max(y_array), min(y_array))

этот метод работает для меня, когда я пытаюсь объединить несколько наборов данных на Y1 и / или Y2

кроме того, вы можете использовать matplotlib.pyplot.axis () функция, которая позволяет инвертировать любую ось графика

ax = matplotlib.pyplot.axis()
matplotlib.pyplot.axis((ax[0],ax[1],ax[3],ax[2]))

или если вы предпочитаете только перевернуть ось X, то

matplotlib.pyplot.axis((ax[1],ax[0],ax[2],ax[3]))

действительно, Вы можете инвертировать обе оси:

matplotlib.pyplot.axis((ax[1],ax[0],ax[3],ax[2]))

использование ylim () может быть лучшим подходом для вашей цели:

xValues = list(range(10))
quads = [x** 2 for x in xValues]
plt.ylim(max(quads), 0)
plt.plot(xValues, quads)

результат:enter image description here

Comments

    Ничего не найдено.