Графическое представление предоставляет искаженные и непригодные графики с Python 2.7 после обновления до Ubuntu 18.04

Мой код Python 2.7, который я запускал в Ubuntu 16.04, выполняет несколько простых процедур графического построения графиков, которые предоставляют искаженные и непригодные графики теперь, когда я обновился до Ubuntu 18.04. Я не получаю сообщений об ошибках или предупреждений. Я не запускаю python3 в новой Ubuntu, и версия, которую я вызываю, это версия python 2.7.15rcq. Какие-либо предложения?

Импортируемые библиотеки Python:
SciPy
pylab
математический

и пара, которая, вероятно, не имеет отношения к этой проблеме заговора.

1 ответ

Python IDE для ученых (spyder) может выполнять встроенные черчения. Чтобы попробовать эту функцию, откройте терминал и введите:

sudo apt install python2.7 ipython python-matplotlib spyder  

После запроса ipython в консоли IPython скопируйте / вставьте приведенный ниже код и нажмите клавишу Enter, чтобы запустить его.

import matplotlib.pyplot as plt   
x, y = [-1, 12], [1, 4]  
plt.plot(x, y, marker = 'o')  

Если это работает, попробуйте следующий код Python, который использует модули scipy, pylab и math.

 импорт pylab как plb
импортировать matplotlib.pyplot как plt
из scipy.optimize import curve_fit
из scipy import asarray как ar, exp
импорт математики

х = ар ([37,69,157,238,274,319,391,495,533,626,1366,1855,2821,3615,4130,4374,6453,6863,7021,
    7951,8646,9656,10464,11400])
у = ар ([1.77,1.67,1.65,1.17,1.34,1.46,0.75,1,0.8,1.02,0.65,0.69,0.44,0.44,0.55,0.43,0.75,0.27,0.26,
    0.44,0.04,0.44,0.26,0.04])

n = 24 # количество данных
среднее = сумма (x*y)/n                       # обратите внимание на это исправление
sigma = math.sqrt(сумма (y*(x-среднее)**2)/n) # обратите внимание на это исправление

def gaus(x,a,sigma):
    вернуть *exp(-(x)**2/(2* сигма ** 2))

р0 = [1,2, 4000]
popt,pcov = curve_fit(gaus,x,y,p0=p0) 

plt.plot (х, у,'Ь +:', метка ='данные')
plt.plot(х, GAUS (х, * Popt),'ро:', метка ='подходит')
plt.legend()
plt.title("Рис. 3 - подходит для постоянной времени")
plt.xlabel('Время (с)')
plt.ylabel("Напряжение (V)")
plt.show ()

def gaus(x,a,sigma):
    вернуть *exp(-(x)**2/(2* сигма ** 2))

р0 = [1,2, 4000]
popt,pcov = curve_fit(gaus,x,y,p0=p0) 

Вывод показан на скриншоте ниже.


(Нажмите на изображение, чтобы увеличить)

Вывод показывает это предупреждение:

Warning: pylab (numpy and matplotlib) and symbolic math (sympy) are both 
enabled at the same time. Some pylab functions are going to be overrided by   
the sympy module (e.g. plot).  

... но график выводится правильно, несмотря на это предупреждение.

Для устранения предупреждения удалите import pylab as plb в строке 1 из кода. Если щелкнуть треугольный значок слева от строки 1, появится следующее сообщение о проверке синтаксиса.

'pylab as plb' imported but unused  

Сообщение проверки синтаксиса правильное. Код выводит точно такой же график при удалении строки 1. Иногда это помогает использовать IDE при отладке длинных блоков кода, потому что IDE имеет такие функции, как проверка синтаксиса.

Другие вопросы по тегам