在numpy / python

时间:2018-04-05 12:55:48

标签: python numpy matplotlib plot colors

我正在解决优化问题。有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()

2 个答案:

答案 0 :(得分:1)

您可以直接向plt.scatter()提供颜色列表。例如:你可以这样做:

import seaborn as sns
color_list = sns.color_palette("Paired", n_colors=x_test.shape[0])
plt.scatter(x_test[:,0], x_test[:,1], color=color_list)

如果您希望matplotlib留下颜色,请检查colormap_reference

使用plt.cm的示例:

plt.scatter(x_test[:,0], x_test[:,1], color=plt.cm.Paired.colors[:x_test.shape[0]])

答案 1 :(得分:-1)

你需要遍历每个点

假设您的数据类似于

x = [[1,2],[3,4],[5,6],[7,8]]

然后,像

c_aray = ['black','green','red','blue']
for i in range(len(x)):
    xn = x[i]
    plt.plot(xn[0],xn[1],color = c_aray[i],'o')