两个问题合二为一:鉴于在 Julia 中绘制的一条线,我如何才能
作为下面代码中的一个具体示例,我如何 1. 删除以前的回归线或 2. 将它们的不透明度更改为 0.1?
using Plots; gr()
f = x->.3x+.2
g = x->f(x)+.2*randn()
x = rand(2)
y = g.(x)
plt = scatter(x,y,c=:orange)
plot!(0:.1:1, f, ylim=(0,1), c=:green, alpha=.3, linewidth=10)
anim = Animation()
for i=1:200
r = rand()
x_new, y_new = r, g(r)
push!(plt, x_new, y_new)
push!(x, x_new)
push!(y, y_new)
A = hcat(fill(1., size(x)), x)
coefs = A\y
plot!(0:.1:1, x->coefs[2]*x+coefs[1], c=:blue) # plot new regression line
# 1. delete previous line
# 2. set alpha …Run Code Online (Sandbox Code Playgroud) [解决方案已添加到此帖子的EDIT部分中]
2个动画子图垂直堆叠。
我想根据鼠标位置在它们之间显示一条黑色垂直线。
到目前为止,移动鼠标时我只能完全弄乱这个身影。
如何清除更新之间的旧垂直线?
(只是出于好奇:由于具有鼠标移动控制功能,即使不移动鼠标,我的PC风扇在执行代码时也会发疯。鼠标是否“计算成本很高”?!?)
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from time import sleep
val1 = np.zeros(100)
val2 = np.zeros(100)
level1 = 0.2
level2 = 0.5
fig, ax = plt.subplots()
ax1 = plt.subplot2grid((2,1),(0,0))
lineVal1, = ax1.plot(np.zeros(100))
ax1.set_ylim(-0.5, 1.5)
ax2 = plt.subplot2grid((2,1),(1,0))
lineVal2, = ax2.plot(np.zeros(100), color = "r")
ax2.set_ylim(-0.5, 1.5)
def onMouseMove(event):
ax1.axvline(x=event.xdata, color="k")
ax2.axvline(x=event.xdata, color="k")
def updateData():
global level1, val1
global level2, val2
clamp = lambda n, minn, maxn: max(min(maxn, n), minn) …Run Code Online (Sandbox Code Playgroud) 我正在使用嵌入在WxPython GUI中的matplotlib图来呈现一些数据.图中的内容(显示的数据)随点击按钮的功能不断变化,...
数据有两种类型.
1)轮廓线
self.axes.contour(x_scale_map,y_scale_map,matrix,cl,cmap=my_cmap,extent=0,matrix.shape[1]-1,0,matrix.shape[0]-1))
Run Code Online (Sandbox Code Playgroud)
加载速度相对较慢(~1s),但不会经常变化.
2)在这个轮廓的顶部,我绘制了一些例如线条
self.axes.axhline(y,color='black')
Run Code Online (Sandbox Code Playgroud)
这些线条显然是立即绘制的,并且经常根据用户点击的内容进行更改.在这些情况下,先前绘制的线条需要消失,新的线条需要出现,而等高线图保持不变.
现在,我的问题如下.我还没有找到一种方法只删除线条而不是轮廓.获得所需结果的唯一方法似乎是:
self.axes.clear()
Run Code Online (Sandbox Code Playgroud)
然后重新绘制轮廓和新线.但如上所述,每次重新加载轮廓都很慢,因而很烦人.
有没有办法只清除图中的线条?我试图通过做类似的事情来使用叠加的子图:
self.axes1 = self.fig.add_subplot(111)
self.axes2 = self.fig.add_subplot(111)
self.axes1.contour(...)
self.axes2.axhline(y,color='black')
self.axes2.clear()
Run Code Online (Sandbox Code Playgroud)
但是最后一行清除了整个数字.
有谁知道如何实现所需的功能?谢谢
我需要删除子图上的所有线条,然后重绘它们(我正在制作一个重绘函数,以便在添加/删除一些线条时使用)我该怎么做?