如何在matplotlib.pyplot中制作以颜色分隔的散点图

时间:2017-10-10 05:38:46

标签: python if-statement matplotlib plot

enter image description here

我想制作这样的情节...

有3个条款..

  1. 如果x> 700 - >山口= '蓝色'
  2. 如果x <= 700且y> -2 - &gt;山口= '黑'
  3. 如果x <= 700且y <= -2 - > col ='red'和marker ='*'
  4. 我怎样才能制作出那样的情节?

    enter image description here

1 个答案:

答案 0 :(得分:0)

我没有确切的数据,所以我只想创建自己的数据集。最简单的方法是在三个独立的数组中存储您希望生成的三种不同的颜色类型。请检查以下代码。

import matplotlib.pyplot as plt
import random

x_val = [random.randint(600, 800) for i in range(500)]
y_val = [random.randint(-4, 0) for i in range(500)]
blue_plot = [(x, y) for (x, y) in zip(x_val, y_val) if x > 700]
black_plot = [(x, y) for (x, y) in zip(x_val, y_val) if x <= 700 and y >= -2]
red_plot = [(x, y) for (x, y) in zip(x_val, y_val) if x <= 700 and y <= -2]

def separate_x_y(val):
    x = [x for (x, _) in val]
    y = [y for (_, y) in val]
    return x, y

blue_x, blue_y = separate_x_y(blue_plot)
black_x, black_y = separate_x_y(black_plot)
red_x, red_y = separate_x_y(red_plot)

# Main part of code
plt.scatter(blue_x, blue_y, color = 'blue')
plt.scatter(black_x, black_y, color = 'black')
plt.scatter(red_x, red_y, color = 'red', marker = '*')
plt.xlim(550, 850)
plt.ylim(-6, 2)
plt.show()

你会得到这样的情节。

Plot