回答
假设你有一个二维数组数据,这应该工作:
import numpy
import pylab
xy = numpy.zeros((2, 1000))
xy[0] = range(1000)
xy[1] = range(1000)
colors = [int(i % 23) for i in xy[0]]
pylab.scatter(xy[0], xy[1], c=colors)
pylab.show()
您还可以设置一个cmap
属性来控制其颜色将通过使用颜色表的;如更换与pylab.scatter
行:
pylab.scatter(xy[0], xy[1], c=colors, cmap=pylab.cm.cool)
彩色地图列表,可以发现 here
接受的答案有它发现的,但如果你可能要指定哪些类别标签应分配给一个特定的颜色或标签,你可以做到以下几点。我用彩条做了一个小标签体操,但是让情节本身减少到一个很好的单线。这适用于绘制sklearn的分类结果。每个标签匹配(x,y)坐标。
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
x = [4,8,12,16,1,4,9,16]
y = [1,4,9,16,4,8,12,3]
label = [0,1,2,3,0,1,2,3]
colors = ['red','green','blue','purple']
fig = plt.figure(figsize=(8,8))
plt.scatter(x, y, c=label, cmap=matplotlib.colors.ListedColormap(colors))
cb = plt.colorbar()
loc = np.arange(0,max(label),max(label)/float(len(colors)))
cb.set_ticks(loc)
cb.set_ticklabels(colors)
使用this答案的一个略加修改的版本,一个可以概括上述用于N种颜色如下:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
N = 23 # Number of labels
# setup the plot
fig, ax = plt.subplots(1,1, figsize=(6,6))
# define the data
x = np.random.rand(1000)
y = np.random.rand(1000)
tag = np.random.randint(0,N,1000) # Tag each point with a corresponding label
# define the colormap
cmap = plt.cm.jet
# extract all colors from the .jet map
cmaplist = [cmap(i) for i in range(cmap.N)]
# create the new map
cmap = cmap.from_list('Custom cmap', cmaplist, cmap.N)
# define the bins and normalize
bounds = np.linspace(0,N,N+1)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
# make the scatter
scat = ax.scatter(x,y,c=tag,s=np.random.randint(100,500,N),cmap=cmap, norm=norm)
# create the colorbar
cb = plt.colorbar(scat, spacing='proportional',ticks=bounds)
cb.set_label('Custom cbar')
ax.set_title('Discrete color mappings')
plt.show()
其中给出:
你可以用23种颜色来制作它吗(就像OP说的那样,我也是这样),还有1k个随机点?你的回答非常好,并且对我的照片赞不绝口,但是我想知道这是否适用于10个班级。 –
查看上面的编辑。 – salomonvh
非常感谢。 –
一个简单的解决方案是为每个班级分配颜色。这样,我们可以控制每个班级的每种颜色。例如:
arr1 = [1, 2, 3, 4, 5]
arr2 = [2, 3, 3, 4, 4]
labl = [0, 1, 1, 0, 0]
color= ['red' if l == 0 else 'green' for l in labl]
plt.scatter(arr1, arr2, color=color)
- 1. matplotlib:颜色条及其文本标签
- 2. Matplotlib:多种颜色的y轴标签
- 3. 颜色条matplotlib上的日志标签
- 4. 颜色编码matplotlib标记
- 5. 在matplotlib中更改坐标轴的颜色,刻度和标签
- 6. Chart.js标签颜色
- 7. matplotlib图表轴上的每个标签有不同的颜色?
- 8. 如何在matplotlib中设置轮廓标签的背景颜色?
- 9. Matplotlib:如何将标签添加到现有的颜色条?
- 10. Matplotlib设置颜色
- 11. matplotlib check_buttons盒颜色
- 12. Python Matplotlib点颜色
- 13. Matplotlib颜色问题
- 14. matplotlib中的颜色
- 15. UITest标签颜色(不是UI标签)
- 16. 标签颜色改变其他标签
- 17. 属性更改标签颜色标签
- 18. 基于标签值的标签颜色
- 19. matplotlib:更改标题和颜色条文本和刻度颜色
- 20. matplotlib imshow - 默认颜色标准化
- 21. python和matplotlib并更改标记颜色
- 22. PatchCollection的Matplotlib颜色条替换颜色
- 23. Matplotlib颜色映射:最大颜色数
- 24. 颜色绘制不同的颜色matplotlib
- 25. Unity改变GUI颜色/滑块颜色/标签颜色
- 26. Chart.js更改标签颜色
- 27. 颜色代码表标签
- 28. 在CSS中颜色标签
- 29. Android个人标签颜色
- 30. 钛IOS7 - 标签颜色(TabGroup)
其实我的数据有23个这样的标签。所以,我将颜色矢量分配为从0到22的列表形式,其矢量长度与xy相同。但是,我得到一个错误,说序列长度必须是3或4. – user1050325
您可以添加一些示例代码和错误消息到您的问题?我修改了我放在这里的一个简单例子,它有一千个点和23个标签。 – brentlance
虽然我使用绘图功能时没有出现错误。不幸的是我用plot函数覆盖了我的代码,因此无法复制错误。 – user1050325