#python #python-3.x #matplotlib
#python #python-3.x #matplotlib
Вопрос:
Мой код выглядит следующим образом (не спрашивайте имена переменных, я немец ^^):
import matplotlib.pyplot as plt
import numpy as np
strecke = []
zeit = []
daten = open("BewegungBeschleunigung.csv")
for i in daten:
i = i.strip().split(",")
strecke.append(i[1])
zeit.append(i[0])
zeit.pop(0)
strecke.pop(0)
f, ax = plt.subplots()
ax.set_xticks(np.arange(0, 100 1, 5))
ax.set_yticks(np.arange(0,6000, 10))
ax.set_xlabel("Zeit")
ax.set_ylabel("Strecke")
plt.plot(zeit, strecke, "go")
#plt.autoscale(enable = False, axis = "both", tight = None)
plt.grid(True)
plt.show()
Теперь мой вопрос таков: как вы можете видеть на рисунке, ось y переходит только в 4860 вместо 6000, что я и написал, а не в 10 шагов (как я хотел). Это просто выполняется случайными шагами. Что я делаю не так и почему ось x не переходит в 100?
спасибо за вашу помощь.
Комментарии:
1. Вам следует попробовать установить ограничения после построения графика. Так что двигайтесь
plt.plot(zeit, strecke, "go")
, прежде чем устанавливать галочки2. спасибо за помощь, но если я делаю это, это выглядит примерно так: prntscr.com/n0lvcp
3. Попробуйте следующее:
ax.set_xlim(0, 101)
иax.set_ylim(0, 6000)
, а затем установите xticks и yticks и дайте мне знать, что произойдет4. куда именно я должен это добавить? почему я новичок, просто где-то в коде?
5. Сначала
plt.plot(zeit, strecke, "go")
, затемax.set_xlim(0, 101)
иax.set_ylim(0, 6000)
, а затемax.set_xticks(np.arange(0, 100 1, 5))
иax.set_yticks(np.arange(0,6000, 10))
Ответ №1:
У меня была такая же проблема, и через несколько часов я обнаружил, что мои значения были strigs:
ypoints=['97', '100', '98', '99', '55', '97', '100', '98', '100', '100', '100', '100', '100', '98', '100', '100']
Я только сделал следующее:
ypoints = [int(y) for y in ypoints]
Ответ №2:
Проблема, которую я обнаружил, заключалась в том, что ваши значения были строками. Вы можете преобразовать их в значения с плавающей запятой при сохранении в списках. Затем вы можете установить ограничения оси. Обратите внимание, что np.arange(0,6000, 10)
это сгенерировало бы 600 тактов. Это приведет к переполнению вашей оси y.
for i in daten:
i = i.strip().split(",")
strecke.append(float(i[1]))
zeit.append(float(i[0]))
zeit.pop(0)
strecke.pop(0)
f, ax = plt.subplots()
ax.set_xlabel("Zeit")
ax.set_ylabel("Strecke")
ax.plot(zeit, strecke, "go")
ax.set_xlim(0, 100)
ax.set_ylim(0, 6000)
ax.grid(True)