针对关闭Pyplot窗口和python中关闭图形窗口这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Ext的prompt怎么在点击OK按钮的时候触发事件而不关闭prompt窗口呢?、impo
针对关闭Pyplot窗口和python中关闭图形窗口这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Ext的prompt怎么在点击OK按钮的时候触发事件而不关闭prompt窗口呢?、import matplotlib.pyplot as plt出错、matplotlib Axes.plot()与pyplot.plot()、Matplotlib.pyplot 二维绘图等相关知识,希望可以帮助到你。
本文目录一览:- 关闭Pyplot窗口(python中关闭图形窗口)
- Ext的prompt怎么在点击OK按钮的时候触发事件而不关闭prompt窗口呢?
- import matplotlib.pyplot as plt出错
- matplotlib Axes.plot()与pyplot.plot()
- Matplotlib.pyplot 二维绘图
关闭Pyplot窗口(python中关闭图形窗口)
最终编辑:
我在关闭pyplot窗口这一主题上发现,实际上可能不应该使用pyplot完成它。SRK给出了一个很好的示例,说明如何处理将在下面的答案中更新的图。我也偶然发现了如何将pyplot图放到Tkinter窗口中,并且Tkinter比pyplot更擅长打开和关闭窗口。这里是怎样把一个pyplot情节变成Tk的窗口,
/最终编辑
我希望能够显示多个图,然后能够从某些代码输入中分别关闭(从屏幕上删除)它们,但是我不知道要这样做的代码输入。
以下是到目前为止我尝试过的。我一直在使用show和close命令的位置,但是我从中获得的唯一真实结果是没有绘制一个或另一个图,但是我无法从屏幕上删除一个图。我一直在插入raw_input()创建暂停。
编辑:这些图是从Tkinter gui调用的,如果有更好的方法从该方向进行操作,我会很高兴听到它。
任何输入将不胜感激,谢谢。
import matplotlib.pyplot as plta = range(0,10)b = range(0,20,2)c = range(0,30,3)d = range(0,40,4)plot1 = plt.figure()plt.plot(a,b, ''r-o'')plt.show()plt.close()plot2 = plt.figure()plt.plot(c,d, ''b-o'')plt.show()plt.close()
编辑代码:这也不起作用。
plot1 = plt.figure(1)plt.plot(a,b, ''r-o'')plot2 = plt.figure(2)plt.plot(c,d, ''b-o'')#plt.close(1)#this will prevent plot1 from being displayedplt.show()plt.close(1) # or (''all'') or (plot1)
答案1
小编典典plt.close()
将关闭当前实例。
plt.close(2)
将关闭图2
plt.close(plot1)
将使用图plot1关闭图
plt.close(''all'')
将关闭所有漏洞
在这里找到。
请记住,这plt.show()
是一个 阻塞
函数,因此在您上面使用的示例代码中,plt.close()
直到关闭窗口后才执行该函数,从而使其变得多余。
您可以plt.ion()
在代码的开头使用它来使其成为非阻塞的,尽管这还有其他含义。
例
在评论中进行讨论之后,我整理了一个示例,只是为了演示如何使用绘图功能。
下面我创建一个图:
fig = plt.figure(figsize=plt.figaspect(0.75))ax = fig.add_subplot(1, 1, 1)....par_plot, = plot(x_data,y_data, lw=2, color=''red'')
在这种情况下,ax
上面是一对轴的手柄。每当我想对这些轴进行操作时,都可以通过调用将当前轴集更改为该特定轴集axes(ax)
。
par_plot
是line2D实例的句柄。这就是所谓的艺术家。如果要更改该行的属性(例如更改ydata),可以通过引用此句柄来实现。
我还可以通过执行以下操作来创建滑块小部件:
axsliderA = axes([0.12, 0.85, 0.16, 0.075])sA = Slider(axsliderA, ''A'', -1, 1.0, valinit=0.5)sA.on_changed(update)
第一行为滑块创建了一个新轴(称为axsliderA
),第二行创建了sA
放置在轴中的滑块实例,第三行指定了当滑块值更改时调用的函数(update
)。
我的更新功能可能看起来像这样:
def update(val): A = sA.val B = sB.val C = sC.val y_data = A*x_data*x_data + B*x_data + C par_plot.set_ydata(y_data) draw()
该par_plot.set_ydata(y_data)
改变YDATA 财产 的的 Line2D是否 与处理对象par_plot
。
该draw()
功能更新 当前 轴组。
放在一起:
from pylab import *import matplotlib.pyplot as pltimport numpydef update(val): A = sA.val B = sB.val C = sC.val y_data = A*x_data*x_data + B*x_data + C par_plot.set_ydata(y_data) draw()x_data = numpy.arange(-100,100,0.1);fig = plt.figure(figsize=plt.figaspect(0.75))ax = fig.add_subplot(1, 1, 1)subplots_adjust(top=0.8)ax.set_xlim(-100, 100);ax.set_ylim(-100, 100);ax.set_xlabel(''X'')ax.set_ylabel(''Y'')axsliderA = axes([0.12, 0.85, 0.16, 0.075])sA = Slider(axsliderA, ''A'', -1, 1.0, valinit=0.5)sA.on_changed(update)axsliderB = axes([0.43, 0.85, 0.16, 0.075])sB = Slider(axsliderB, ''B'', -30, 30.0, valinit=2)sB.on_changed(update)axsliderC = axes([0.74, 0.85, 0.16, 0.075])sC = Slider(axsliderC, ''C'', -30, 30.0, valinit=1)sC.on_changed(update)axes(ax)A = 1;B = 2;C = 1;y_data = A*x_data*x_data + B*x_data + C;par_plot, = plot(x_data,y_data, lw=2, color=''red'')show()
关于上述内容的注释:当我运行应用程序时,代码会依次依次运行(update
我认为它将函数存储在内存中),直到遇到阻塞的show()为止。当您对其中一个滑块进行更改时,它会从内存中运行更新功能(我认为?)。
这就是为什么show()如此实现的原因,因此您可以通过使用函数来处理数据来在后台更改值。
Ext的prompt怎么在点击OK按钮的时候触发事件而不关闭prompt窗口呢?
Ext的prompt组件要求用户输入一些信息,但是我想实现在点击确定按钮的时候验证用户有没有填东西,如果填了就保存,否则再弹出一个alert提示用户必须填写东西,但如果用回调函数的话这个时候prompt就关闭了,怎样才能既弹出alert又不关闭prompt呢?或者说怎么让确定按钮绑定一个事件呢?既怎么获取这个prompt的确定或取消按钮?
import matplotlib.pyplot as plt出错
>>>import matplotlib.pyplot as plt
/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment. warnings.warn(''Matplotlib is building the font cache using fc-list. This may take a moment.'')
在第八讲中,导入这个模块出错
解决:
找到缓存目录 删除~/.cache/matplotlib下面的缓存
deleted ~/.cache/matplotlib/fontList.cache
但是,当我准备删的时候,再import matplotlib时时没有出错,
不知道具体的原因是什么
matplotlib Axes.plot()与pyplot.plot()
Axes.plot()
和pyplot.plot()
方法之间有什么区别?一个人是否将另一个人用作子例程?
看来我的绘图选项是
line = plt.plot(data)
要么
ax = plt.axes()
line = ax.plot(data)
甚至
fig = plt.figure()
ax = fig.add_axes([0,1,1])
line = ax.plot(data)
在某些情况下,优先使用一种而不是另一种?
Matplotlib.pyplot 二维绘图
例1:缺参补全
import matplotlib.pyplot as plt
plt.plot([5, 6, 8, 10])
plt.ylabel(''some numbers'')
plt.show()
你会很好奇,为什么x轴范围在0-3而y轴的范围在5-10。因为如果你仅仅只提供一个列表给plot()命令,matplotlib
会默认这是y值,再按照len(y)=4,即y的长度给x从0开始分配相应长度的列表[0,1,2,3]。
例2.给定坐标轴范围
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], ''ro'')
plt.axis([0, 6, 0, 20])
plt.show()
plot()命令中参数''ro''表示红色的实心圆点
axis()命令即给定x,y轴的范围
例3.与numpy中array的配合
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0., 5., 0.2)
# [0. 0.2 0.4 0.6 0.8 1. 1.2 1.4 1.6 1.8 2. 2.2 2.4 2.6 2.8 3. 3.2 3.4 3.6 3.8 4. 4.2 4.4 4.6 4.8]
# red的--, blue的方框 and green的尖尖
plt.plot(t, t, ''r--'', t, t ** 2, ''bs'', t, t ** 3, ''g^'')
plt.show()
例4:控制线的属性
1.线的粗细
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 2, 3, 4], linewidth=10)
plt.show()
2.抗锯齿
import matplotlib.pyplot as plt
line, = plt.plot([1, 2, 3, 4], [1, 2, 3, 4], ''-'')
line.set_antialiased(False) # 关闭抗锯齿
plt.show()
3.设置多属性
import matplotlib.pyplot as plt
lines = plt.plot([1, 2, 3, 4], [1, 2, 3, 4])
# 同时设置线的多个属性
plt.setp(lines, color=''r'', linewidth=2.0, alpha=0.2)
plt.show()
属性大全:
Property | Value Type |
---|---|
alpha | float |
animated | [True | False] |
antialiased or aa | [True | False] |
clip_box | a matplotlib.transform.Bbox instance |
clip_on | [True | False] |
clip_path | a Path instance and a Transform instance, a Patch |
color or c | any matplotlib color |
contains | the hit testing function |
dash_capstyle | [''butt'' | ''round'' | ''projecting'' ] |
dash_joinstyle | [''miter'' | ''round'' | ''bevel'' ] |
dashes | sequence of on/off ink in points |
data | (np.array xdata, np.array ydata) |
figure | a matplotlib.figure.Figure instance |
label | any string |
linestyle or ls | [ ''-'' | ''--'' | ''-.'' | '':'' | ''steps'' | ...] |
linewidth or lw | float value in points |
lod | [True | False] |
marker | [ ''+'' | '','' | ''.'' | ''1'' | ''2'' | ''3'' | ''4'' ] |
markeredgecolor or mec | any matplotlib color |
markeredgewidth or mew | float value in points |
markerfacecolor or mfc | any matplotlib color |
markersize or ms | float |
markevery | [ None | integer | (startind, stride) ] |
picker | used in interactive line selection |
pickradius | the line pick selection radius |
solid_capstyle | [''butt'' | ''round'' | ''projecting'' ] |
solid_joinstyle | [''miter'' | ''round'' | ''bevel'' ] |
transform | a matplotlib.transforms.Transform instance |
visible | [True | False] |
xdata | np.array |
ydata | np.array |
zorder | any number |
例5:多图
1.图中多图
import numpy as np
import matplotlib.pyplot as plt
def f(t):
return np.exp(-t) * np.cos(2 * np.pi * t)
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
plt.figure(1)
plt.subplot(311)
plt.plot(t1, f(t1), ''bo'', t2, f(t2), ''k'')
plt.subplot(312)
plt.plot(t2, np.cos(2 * np.pi * t2), ''r--'')
plt.subplot(313)
plt.plot(t2, np.cos(2 * np.pi * t2), ''r^'')
plt.show()
2.多图齐出
import matplotlib.pyplot as plt
plt.figure(1) # the first figure
plt.subplot(211) # the first subplot in the first figure
plt.plot([1, 2, 3])
plt.subplot(212) # the second subplot in the first figure
plt.plot([4, 5, 6])
plt.figure(2) # a second figure
plt.plot([4, 5, 6]) # creates a subplot(111) by default
plt.show()
例6:图中插字
import numpy as np
import matplotlib.pyplot as plt
# Fixing random state for reproducibility
np.random.seed(19680801)
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
# the histogram of the data
n, bins, patches = plt.hist(x, 50, normed=1, facecolor=''g'', alpha=0.75)
t = plt.xlabel(''my data'', fontsize=14, color=''red'')
plt.ylabel(''Probability'')
plt.title(''Histogram of IQ'')
plt.text(60, .025, r''$\mu=100,\ \sigma=15$'')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()
1.使用数学表达式
plt.title(r''$\sigma_i=15$'')
2.注释语
import numpy as np
import matplotlib.pyplot as plt
ax = plt.subplot(111)
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2 * np.pi * t)
line, = plt.plot(t, s, lw=2)
plt.annotate(''local max'', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor=''black'', shrink=0.05),
)
plt.ylim(-2, 2)
plt.show()
关于关闭Pyplot窗口和python中关闭图形窗口的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Ext的prompt怎么在点击OK按钮的时候触发事件而不关闭prompt窗口呢?、import matplotlib.pyplot as plt出错、matplotlib Axes.plot()与pyplot.plot()、Matplotlib.pyplot 二维绘图等相关知识的信息别忘了在本站进行查找喔。
本文标签: