![升级到 Ubuntu 18.04 后,使用 Python 2.7 进行图形绘制时,绘图出现扭曲且不可用的情况](https://linux22.com/image/1064516/%E5%8D%87%E7%BA%A7%E5%88%B0%20Ubuntu%2018.04%20%E5%90%8E%EF%BC%8C%E4%BD%BF%E7%94%A8%20Python%202.7%20%E8%BF%9B%E8%A1%8C%E5%9B%BE%E5%BD%A2%E7%BB%98%E5%88%B6%E6%97%B6%EF%BC%8C%E7%BB%98%E5%9B%BE%E5%87%BA%E7%8E%B0%E6%89%AD%E6%9B%B2%E4%B8%94%E4%B8%8D%E5%8F%AF%E7%94%A8%E7%9A%84%E6%83%85%E5%86%B5.png)
我在 Ubuntu 16.04 中运行的 Python 2.7 代码执行了一些简单的图形绘制例程,现在我已升级到 Ubuntu 18.04,这些例程提供的绘图扭曲且不可用。我没有收到任何错误消息或警告。我没有在新的 Ubuntu 中运行 python3,我调用的版本是 python 版本 2.7.15rcq。有什么建议吗?
导入的 Python 库包括:
scipy
pylab
math
还有一些可能与该绘图问题无关。
答案1
面向科学家的 Python IDE(蜘蛛)可以进行内联绘图。要试用此功能,请打开终端并输入:
sudo apt install python2.7 ipython python-matplotlib spyder for Python 2.x in Ubuntu 18.04 and earlier
或者
sudo apt install python3 ipython3 python3-matplotlib spyder3 for Python 3.x
在 IPython 控制台中的 ipython 提示符后复制/粘贴以下代码并按下Enter键来运行它。
import matplotlib.pyplot as plt
x, y = [-1, 12], [1, 4]
plt.plot(x, y, marker = 'o')
如果有效,请尝试以下使用 scipy、pylab 和 math 模块的 Python 代码。
将 pylab 导入为 plb 导入 matplotlib.pyplot 作为 plt 从 scipy.optimize 导入 curve_fit 从 scipy 导入数组作为 ar,exp 导入数学 x=ar([37,69,157,238,274,319,391,495,533,626,1366,1855,2821,3615,4130,4374,6453,6863,7021, (7951,8646,9656,10464,11400) y=ar([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(sum(y*(x-mean)**2)/n) # 注意这个修正 def gaus(x,a,sigma): 返回 a*exp(-(x)**2/(2*sigma**2)) p0 = [1.2, 4000] popt,pcov = 曲线拟合(gaus,x,y,p0=p0) plt.plot(x,y,'b+:',label='数据') plt.plot(x,gaus(x,*popt),'ro:',label='fit') plt. 图例() plt.title('图 3 - 适合时间常数') plt.xlabel('时间(秒)') plt.ylabel('电压(V)') plt.显示() def gaus(x,a,sigma): 返回 a*exp(-(x)**2/(2*sigma**2)) p0 = [1.2, 4000] popt,pcov = 曲线拟合(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 具有语法检查等功能。