#python #matplotlib #graphing #absolute-value
#python #matplotlib #построение графиков #абсолютное значение
Вопрос:
Я пытаюсь построить функцию f (X) = 2 * abs (x-2) 4, но в вершине или в точке (2,4) график просто останавливается и обходит его. Есть ли способ изменить его так, чтобы он действительно попал в точку? заранее спасибо.
import matplotlib.pyplot as plt
import numpy as np
import math
def graph(width, hight):
x = np.linspace(-width,width)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.set_ylim(-hight, hight)
ax.set_xlim(-width, width)
# the function
y = 2 * abs(x-2) 4
plt.plot(x,y,)
plt.xticks(np.arange(-width, width 1, 1.0))
plt.yticks(np.arange(-hight, hight 1, 1.0))
plt.grid(True)
plt.show()
graph(10, 10)
«»»
Комментарии:
1. Попробуйте
x = np.linspace(-width,width, 500)
или около того. Чем больше число, тем больше подразделений. 500 должно быть достаточно для просмотра на экране. Значение по умолчанию равно 50, что немного мало.
Ответ №1:
Проблема для вашей цели — это ваш диапазон, с которым вы создаете linspace
. Количество выборок по умолчанию равно 50 для этого метода, и они равномерно распределяются, поэтому, в зависимости от вашего width
, 2
могут быть не в этом диапазоне. Используйте num
аргумент (третья позиция), чтобы увеличить это значение, и оно будет выглядеть лучше, но ваше значение все равно может не находиться в диапазоне.
(Проблема в том, что вы работаете со списком чисел, вы не можете работать с бесконечным множеством).