基于数据来源的散点图的不同颜色
Different colors for scatter plots based on origin of data
我有一个名为 'samples' 的 LIST,我正在从 2 个不同的文件夹(比如说 Folder1 和 Folder2)中将几张图像加载到这个 LIST 中。然后我将此列表转换为 DataFrame 并将它们绘制在二维散点图中。我希望散点图将 Folder1 中的所有内容显示为红色,将 Folder2 中的所有内容显示为蓝色。我怎样才能做到这一点。我的代码如下:
samples = []
Folder1 = glob.iglob('/home/..../Folder1/*.png')
Folder2 = glob.iglob('/home/..../Folder2/*.png')
for fname in Folder1:
img = misc.imread(fname)
samples.append((img[::2, ::2] / 255.0).reshape(-1))
for fname in Folder2:
img = misc.imread(fname)
samples.append((img[::2, ::2] / 255.0).reshape(-1))
samples = pd.DataFrame(samples)
def do_ISO(df):
from sklearn import manifold
iso = manifold.Isomap(n_neighbors=6, n_components=3)
iso.fit(df)
A = iso.transform(df)
return A
def Plot2D(T, title, x, y):
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title(title)
ax.set_xlabel('Component: {0}'.format(x))
ax.set_ylabel('Component: {0}'.format(y))
x_size = (max(T[:,x]) - min(T[:,x])) * 0.08
y_size = (max(T[:,y]) - min(T[:,y])) * 0.08
ax.scatter(T[:,x],T[:,y], marker='.',alpha=0.7)
Plot2D(do_ISO(samples), 'ISO_Chart', 0, 1)
plt.show()
如果没有看到您正在使用的数组,很难说。您实际上是在绘制 do_ISO()
函数的结果,该函数使用 sklearn.manifold.Isomap.transform()
.
创建一个数组
此函数是否保留数组中元素的顺序?
如果是这样,事情可能会相当容易。当您首先填充 Folder1 中的所有图像,然后填充 Folder2 中的所有图像时,您可以简单地计算 Folder1 中的项目数,并根据该数字将数组分成 2 份(例如 nbFilesFolder1
)。然后你调用 2 次 scatter
:
ax.scatter(T[:nbFilesFolder1,x],T[:nbFilesFolder1,y], marker='.',alpha=0.7, c='red')
ax.scatter(T[nbFilesFolder1:,x],T[nbFilesFolder1:,y], marker='.',alpha=0.7, c='blue')
我有一个名为 'samples' 的 LIST,我正在从 2 个不同的文件夹(比如说 Folder1 和 Folder2)中将几张图像加载到这个 LIST 中。然后我将此列表转换为 DataFrame 并将它们绘制在二维散点图中。我希望散点图将 Folder1 中的所有内容显示为红色,将 Folder2 中的所有内容显示为蓝色。我怎样才能做到这一点。我的代码如下:
samples = []
Folder1 = glob.iglob('/home/..../Folder1/*.png')
Folder2 = glob.iglob('/home/..../Folder2/*.png')
for fname in Folder1:
img = misc.imread(fname)
samples.append((img[::2, ::2] / 255.0).reshape(-1))
for fname in Folder2:
img = misc.imread(fname)
samples.append((img[::2, ::2] / 255.0).reshape(-1))
samples = pd.DataFrame(samples)
def do_ISO(df):
from sklearn import manifold
iso = manifold.Isomap(n_neighbors=6, n_components=3)
iso.fit(df)
A = iso.transform(df)
return A
def Plot2D(T, title, x, y):
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title(title)
ax.set_xlabel('Component: {0}'.format(x))
ax.set_ylabel('Component: {0}'.format(y))
x_size = (max(T[:,x]) - min(T[:,x])) * 0.08
y_size = (max(T[:,y]) - min(T[:,y])) * 0.08
ax.scatter(T[:,x],T[:,y], marker='.',alpha=0.7)
Plot2D(do_ISO(samples), 'ISO_Chart', 0, 1)
plt.show()
如果没有看到您正在使用的数组,很难说。您实际上是在绘制 do_ISO()
函数的结果,该函数使用 sklearn.manifold.Isomap.transform()
.
此函数是否保留数组中元素的顺序?
如果是这样,事情可能会相当容易。当您首先填充 Folder1 中的所有图像,然后填充 Folder2 中的所有图像时,您可以简单地计算 Folder1 中的项目数,并根据该数字将数组分成 2 份(例如 nbFilesFolder1
)。然后你调用 2 次 scatter
:
ax.scatter(T[:nbFilesFolder1,x],T[:nbFilesFolder1,y], marker='.',alpha=0.7, c='red')
ax.scatter(T[nbFilesFolder1:,x],T[nbFilesFolder1:,y], marker='.',alpha=0.7, c='blue')