首先,我想生成一个图表,根据数据平均值与目标的接近程度进行颜色标记。(实际程序是一个试图学习权重的机器学习算法)。我想为最终图表中的每个数据点生成一个直方图,但我似乎无法独立生成这些图表。任何帮助都将不胜感激。
import matplotlib.pyplot as pltimport numpy as npdef generateData(goal): x=[_ for _ in range(20)] y=[10+np.random.exponential()*5 for _ in range(100)] return x,ydef drawHistogram(data,nBins): plt.figure(2) plt.hist(diffs,nBins) plt.draw() plt.show()sweep=np.linspace(10,20,4)for goal in sweep: for gw2 in sweep: diffs=[] for i in range(10): data=generateData(goal) diffs.append(goal-np.mean(data[1])) #生成图表 plt.figure(1) clr=(abs(np.mean(diffs))/goal,0,0) plt.plot([goal], [gw2], marker="s", mew='1', ms='35', color=clr) drawHistogram(diffs,5) ##注释掉此行以查看最终图表应有的样子plt.figure(1)plt.draw()plt.show()
回答:
这将生成17个独立的直方图和一个带有红色方块的最终图表。
import matplotlib.pyplot as pltimport numpy as npdef generateData(goal): x=[_ for _ in range(20)] y=[10+np.random.exponential()*5 for _ in range(100)] return x,ydef drawHistogram(data,nBins): plt.figure() plt.hist(diffs,nBins)sweep=np.linspace(10,20,4)for goal in sweep: for gw2 in sweep: diffs=[] for i in range(10): data=generateData(goal) diffs.append(goal-np.mean(data[1])) #生成图表 plt.figure(1) clr=(abs(np.mean(diffs))/goal,0,0) plt.plot([goal], [gw2], marker="s", mew='1', ms='35', color=clr) drawHistogram(diffs,5) ##注释掉此行以查看最终图表应有的样子plt.draw()plt.show()