为特定条件创建颜色编码图(python)



我正试图基于某些参数创建一个绘图。我想根据另一个数据集将散点图分成两种颜色,然后根据另一数据集将透明度分成两种。所以我有一组x坐标,y坐标,坐标强度和类型。例如

xcoord = [1,2,3,4,5]
ycoord = [1,2,3,4,5]
strength = [0.1, 0.4, 0.8, 0.2, 0.8]
type = ['apple', 'banana', 'banana', 'apple', 'banana']

我已经设法以透明的方式绘制了数据,但我想根据第四组数据更改点的颜色。也就是说,如果苹果是红色的,如果香蕉是蓝色的。

到目前为止,我有这个代码:

import re
import matplotlib.pyplot as plt
plt.scatter(xcoord, ycoord, c=strength, cmap='PuRd', s=10, label='time 0')
plt.show()

这很有效,但我不知道如何添加颜色编码。我对此还很陌生,所以任何帮助都将不胜感激

您只需执行此操作即可获得所需结果:

import matplotlib.pyplot as pl
xcoord = [1,2,3,4,5]
ycoord = [1,2,3,4,5]
strength = [0.1, 0.4, 0.8, 0.2, 0.8]
types = ['apple', 'banana', 'banana', 'apple', 'banana']
for i in range(5):
if(types[i]=='apple'):
colour = 'r'
else:
colour = 'y'
pl.scatter(xcoord[i], ycoord[i], color=colour, alpha=strength[i])
pl.show()

matplotlb.pyplot.scatter((只是继续在图形中添加数据,并在调用matplotli.pyplot.show((后显示所有数据。

作为一个初学者,甚至我都不知道这一点:p

# transform data format to:
# [[xcoord, ycoord, strength, types(color)]
#  [xcoord, ycoord, strength, types(color)]
#                 ...
#                 ...
#  [xcoord, ycoord, strength, types(color)]]
xcoord = [1,2,3,4,5]
ycoord = [1,2,3,4,5]
strength = [0.1, 0.4, 0.8, 0.2, 0.8]
types = ['apple', 'banana', 'banana', 'apple', 'banana']
types = map(lambda x: 'green' if x == 'banana' else 'blue', types)
data = list(zip(xcoord,ycoord,strength,types)) 
# Then plot
fig = plt.figure(figsize = (10, 7))
ax = plt.axes(projection ="3d")
for point in data:
ax.scatter3D(point[0], point[1], point[2], color = point[3])
plt.show()

最新更新