2015-01-12 4 views
2

У меня возникла проблема с использованием python matplotlib при создании базового графика функции, в вольфрам-альфа и других машинах для построения графиков окончательный сюжет кажется настолько отличным от того, который я создаю через matplotlib ,Проблемы при построении графика на Matplotlib

Я следовал примеру внутри matplotlib, и я просто заменил функцию np.sin (x) для функции, которую мне нужно построить.

Я использую несколько функций, поэтому это первый, который мне нужен, но он вообще не работает.

Вот код, который я использую, и сравнение сюжетов впереди.

__author__ = 'alberto' 
# 
import numpy 
import matplotlib.pyplot as plt 
# 
x = numpy.arange(-20, 20, 0.1) 
y = ((3*x**2) + 12/(x**3) - 5) 
plt.plot(x, y) 
plt.show() 

Wolfram

Function plotted by wolfram

Matplotlib.

Function plotted by matplotlib

Я использую Анаконды Python (2.7.8).

Имейте славный день !!!

ответ

3

Вы можете сделать один вызов plt.plot генерировать два отключенных кривые (таким образом, обработка асимптоты) путем присвоения nan экстремальных значения. Mathematica автоматически обрабатывает это для вас; Matplotlib требует от вас, чтобы сделать небольшую работу:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.linspace(-20, 20, 1000) 
y = ((3*x**2) + 12/(x**3) - 5) 
mask = np.abs(y) > 100 
y[mask] = np.nan 
plt.plot(x, y) 
plt.grid() 
plt.show() 

дает

enter image description here

+0

Спасибо всем за ответы! Наконец я получил то, что делал, спасибо! Я разбил мне голову на клавиатуре X__X –

0

Вы должны ограничить вертикальное измерение вручную! Вот возможное решение:

import numpy 
import matplotlib.pyplot as plt 

x = numpy.arange(-20, 20, 0.1) 
y = ((3*x**2) + 12/(x**3) - 5) 
plt.plot(x, y) 
plt.ylim(-50, 100) 
plt.show() 

Примечание функция plt.ylim!

1

Если вы посмотрите на этикетки оси, вы увидите, что matplotlib показывает вам гораздо большее окно просмотра, чем Wolfram Alpha. Wolfram alpha показывает вам примерно -4 <= x <= 4 и -50 <= y <= 100, но matplotlib показывает вам -20 <= x <= 20 и y ограничения, которые являются гигантскими.

Чтобы получить сравнимый график, установить пределы Вида:

plt.xlim(-4, 4) 
plt.ylim(-50, 100) 
Смежные вопросы