【发布时间】:2018-09-15 07:28:39
【问题描述】:
我正在解决一个优化问题。有 n 次迭代,每次迭代都有一个点 x_n=[x_n1, x_n2]。我想绘制迭代 x_n 以便随着 n 的增加点的颜色变暗或变亮或其他。目前我可以绘制迭代,但它们都是相同的颜色,所以我不知道哪些点对应于更高的 n 值。
变量 x_test 是一个数组,其中包含从 x_0 到 x_n 的所有迭代。这是我绘制它的代码:
pl.scatter(x_test[:,0], x_test[:,1])
pl.show()
我找到了很多关于如何为图表着色的信息,但不是我想要的方式,每个点对应不同的明暗。
这是一个最小的、完整的、可验证的示例:
import numpy as np
import pylab as pl
x = np.array([[1,1],[1,2],[1,3],[2,4]])
pl.plot(x[:,0], x[:,1])
这给出了数组 x 中点的散点图,但我需要它们每个都是与 x 中的位置相对应的不同颜色,即 [1,1] 应该是最轻的,然后 [1,2] 将稍微变暗,等等,直到 [2,4] 最暗。
编辑:这是我采用的解决方案:
scaled_itera = np.array(range(x_test.shape[0]))/(float(x_test.shape[0])-1)
colors = pl.cm.coolwarm(scaled_itera)
pl.scatter(x_test[:,0], x_test[:,1], color=colors)
pl.show()
【问题讨论】:
-
感谢@WarrenWeckesser,成功了。
标签: python numpy matplotlib plot colors