需要在matplotlib中绘制两种颜色不同的数据类型

时间:2019-06-09 09:07:10

标签: python matplotlib

我有一些数据,例如:

x = [0,1,0,0,0,1,0,.....]
w = [5,3,3.4,5,3,5,.....]
y = [1,1,0,1,0,0,0,.....]

我需要绘制(x,w),此点的颜色应由y确定,就像我有x = 1y = 1w = 3一样,然后这一点应该是color1。如果我有x = 1y = 0,那么对于color2color3x = 0,应该是y = 1color4 x = 0y = 0

我尝试了一些if else语句,但无法使其生效。

我的代码是:

def plot(x,y,w):
    for (a,b) in zip(x,y):
        if (a,b)==(0,0):
            plt.plot(x,w,'ro')

我想针对不同的(x,y)值获得不同的色点。

1 个答案:

答案 0 :(得分:0)

您可以使用散点图:

import numpy as np
colors = 2 * np.array(x) + np.array(y)
plt.scatter(x,w, c = colors)

这会自动为您选择颜色,如果您想使用自定义颜色,则可以:

import numpy as np
import matplotlib.pyplot as plt
colors = 2 * np.array(x) + np.array(y)
plt.scatter(x,w, c = colors)

如果要连接这些点,可以执行以下操作:

import numpy as np
import matplotlib.pyplot as plt
colorNames = np.array(['red', 'blue', ...])
colors = 2 * np.array(x) + np.array(y)
plt.scatter(x,w, c = colorNames[colors])
plt.plot(x,w)

在这里我认为x和y的0和1序列是2位颜色的编码