根据它们最终在 matplotlib 和 numpy 中的价值绘制点
Plotting points based on what value they end up being in matplotlib and numpy
我很抱歉,因为我不知道如何表达我的标题。我是 Python 的新手,尤其是 matplotlib 的新手。在这种情况下,我的数组也使用了 numpy。
目前,我有一组数据:X
,它有四个属性。每个 属性 是一列,每一行是一组数据点(暂时只说它们用数字表示)。这是一个小例子:
X
(height) (weight) (gender) (hair color)
6 32.1 0 12
1.112 6.12 1 9
4 2 0 6
2 3.2 0 11
我还有一个数组 Y
对应于 0 - 2 的整数值。它只是一个 np.array
但每个元素对应于 X
中的那一行值.因此,例如,如果 Y = array([0,2,1,1])
那么我有这些对:
Y X
0 -> (6, 32.1, 0, 12)
2 -> (1.112, 6.12, 1, 9)
1 -> (4, 2, 0, 6)
1 -> (2, 3.2, 0, 11)
我想要做的是为每一对属性创建单独的散点图:
(height, weight) -> (0,1)
(height, gender) -> (0,2)
(height, hair color) -> (0, 3)
并且我希望每个数据点都具有与 Y
值对应的颜色。所以 y = 0 = 'b'
、y = 1 = 'g'
和 y = 2 = 'r'
我知道如何使用
创建一个散点图(在本例中,只是身高和体重列)来映射我想要的配对
plt.plot(X[:,0], X[:,1], 'o', c='b')
plt.show()
但是我不知道如何将这些点中的每一个与保存其颜色的 Y
值相关联,因为我只能输入一种颜色。我将不胜感激任何可以指导我正确方向的帮助或教程。
您可以将 Y 映射到 rgb 颜色并使用 "scatter" 绘制不同颜色的点:
import numpy
from matplotlib import pyplot as plt
X = numpy.array([[6, 32.1, 0, 12],
[1.112, 6.12, 1, 9],
[4, 2, 0, 6],
[2, 3.2, 0, 11]])
Y = numpy.array([0, 1, 1, 2])
# map numbers to rgb colors
Y_color = numpy.zeros(shape=(Y.size, 3))
Y_color[Y == 0] = (1,0,0)
Y_color[Y == 1] = (0,1,0)
Y_color[Y == 2] = (0,0,1)
# use scatter instead of plot
plt.scatter(X[:,0], X[:,1], c=Y_color)
plt.show()
我很抱歉,因为我不知道如何表达我的标题。我是 Python 的新手,尤其是 matplotlib 的新手。在这种情况下,我的数组也使用了 numpy。
目前,我有一组数据:X
,它有四个属性。每个 属性 是一列,每一行是一组数据点(暂时只说它们用数字表示)。这是一个小例子:
X
(height) (weight) (gender) (hair color)
6 32.1 0 12
1.112 6.12 1 9
4 2 0 6
2 3.2 0 11
我还有一个数组 Y
对应于 0 - 2 的整数值。它只是一个 np.array
但每个元素对应于 X
中的那一行值.因此,例如,如果 Y = array([0,2,1,1])
那么我有这些对:
Y X
0 -> (6, 32.1, 0, 12)
2 -> (1.112, 6.12, 1, 9)
1 -> (4, 2, 0, 6)
1 -> (2, 3.2, 0, 11)
我想要做的是为每一对属性创建单独的散点图:
(height, weight) -> (0,1)
(height, gender) -> (0,2)
(height, hair color) -> (0, 3)
并且我希望每个数据点都具有与 Y
值对应的颜色。所以 y = 0 = 'b'
、y = 1 = 'g'
和 y = 2 = 'r'
我知道如何使用
创建一个散点图(在本例中,只是身高和体重列)来映射我想要的配对plt.plot(X[:,0], X[:,1], 'o', c='b')
plt.show()
但是我不知道如何将这些点中的每一个与保存其颜色的 Y
值相关联,因为我只能输入一种颜色。我将不胜感激任何可以指导我正确方向的帮助或教程。
您可以将 Y 映射到 rgb 颜色并使用 "scatter" 绘制不同颜色的点:
import numpy
from matplotlib import pyplot as plt
X = numpy.array([[6, 32.1, 0, 12],
[1.112, 6.12, 1, 9],
[4, 2, 0, 6],
[2, 3.2, 0, 11]])
Y = numpy.array([0, 1, 1, 2])
# map numbers to rgb colors
Y_color = numpy.zeros(shape=(Y.size, 3))
Y_color[Y == 0] = (1,0,0)
Y_color[Y == 1] = (0,1,0)
Y_color[Y == 2] = (0,0,1)
# use scatter instead of plot
plt.scatter(X[:,0], X[:,1], c=Y_color)
plt.show()