每次当条形图绘制时,它们会随机改变颜色。为什么? 这是什么原因?
import matplotlib.pyplot as plt
from matplotlib import mlab
fig = plt.figure()
ax4 = fig.add_subplot(111)
ax4.set_xlim(-10,80)
ax4.set_ylim(0,30)
def view(ylist):
xmin = 0
xmax = 70.0
dx = 10
xlist = mlab.frange (xmin, xmax, dx)
ax4.bar(xlist, ylist, dx)
plt.pause(0.5)
plt.draw()
ylist = [0 for p in range(8)]
for i in range(10):
view(ylist)
ylist[0] +=1
ylist[3] +=2
plt.close()
在运行代码时 - 条形图在循环中改变颜色。为什么? 问题是 - 怎么回事?
答案 0 :(得分:1)
问题在于您正在绘制10个不同的条形图,所有条形图都在同一轴上。您的条形图被绘制在相同的x坐标处,因此被绘制在彼此的顶部。这仍然意味着您的其他条形图仍然存在,因此matplotlib会循环绘制“新”条形图的颜色。
你可以做两件事。首先,您可以调用plt.cla()
来清除当前轴。然而,这将重置y轴限制(这使得它看起来没有什么事情发生)。这意味着您必须使用ax4.set_ylim(0,20)
设置y轴限制。
其次,你可以在ax4.bar()
中指定你想要的条形颜色(虽然这仍然是在旧条上绘图)。
import matplotlib.pyplot as plt
from matplotlib import mlab
fig = plt.figure()
ax4 = fig.add_subplot(111)
ax4.set_xlim(-10,80)
ax4.set_ylim(0,30)
def view(ylist):
xmin = 0
xmax = 70.0
dx = 10
xlist = mlab.frange (xmin, xmax, dx)
plt.cla()
ax4.set_ylim(0,20)
ax4.bar(xlist, ylist, dx) # can add color="blue" if you don't want to use plt.cla()
plt.pause(0.5)
plt.draw()
ylist = [0 for p in range(8)]
for i in range(10):
view(ylist)
ylist[0] +=1
ylist[3] +=2
plt.close()