Почему ось x направлена назад, а оси x и y не помечены на этом простом точечном графике

#matplotlib #scatter-plot

#matplotlib #точечный график

Вопрос:

Почему этот простой точечный график не работает нормально? Похоже, мне приходится прыгать через обручи для чего-то, что должно «просто работать». Я думаю, что приведенный ниже код должен привести к построению графика с (0,0) в качестве начала координат и осями x и y, каждая из которых достигает 10 с красиво помеченными, равномерно расположенными отметками на каждой оси. Вместо этого начало координат находится в 1,7, а ось x направлена назад, уменьшаясь справа налево.

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

 x = ['7', '8', '6', '7.5', '4']
y = ['1', '2', '2', '3', '3']
plt.scatter(x,y)
plt.xlim(0,10)
plt.ylim(0,10)
plt.show()
 

Плохо помеченный точечный график в обратном направлении

Я также пытался

 plt.plot(x,y, 'ro')
plt.axis([0,10,0,10])
plt.show()
 

с аналогичными результатами.
Еще один плохо помеченный обратный график

Я смог получить разумные результаты, вызвав plt.gca().invert_xaxis() , чтобы перевести ось x в увеличивающееся, а не уменьшающееся направление и вручную передать список меток в xticks и yticks, но я не понимаю, зачем это нужно. Почему установка max и min для осей x и y не приводит к получению графика с разумными отметками по умолчанию?

Комментарии:

1. plt.scatter([float(xi) for xi in x], [float(yi) for yi in y], ...)

Ответ №1:

Ваши списки состоят из строк, а не чисел, поэтому matplotlib на самом деле не знает, как обрабатывать их так, как вы ожидаете. Удалите одинарные кавычки из списков x и y и попробуйте еще раз.

Комментарии:

1. Спасибо, я этого не расслышал. На самом деле данных нет в моем скрипте, я просто распечатал их, чтобы скопировать / вставить в этот вопрос, а не включать код, который считывается в данных. Жаль, что matplotlib не генерирует исключение вместо того, чтобы просто выводить мусор. Я предположил, что проблема заключалась в том, что я не знал, как использовать matplotlib, а не в том, что мои исходные данные были в неправильном формате. Я бы решил эту проблему несколько часов назад, если бы он просто сказал мне: «Я не могу строить строки, дурачок!»