首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ValueError:绘制散点图时,RGBA值应在0-1范围内。

ValueError:绘制散点图时,RGBA值应在0-1范围内。
EN

Stack Overflow用户
提问于 2022-03-11 11:06:09
回答 1查看 2K关注 0票数 1

我正试图生成一个散点图,以显示PCA转换前后的数据,类似于此教程

为此,我运行以下代码:

代码语言:javascript
运行
复制
fig, axes = plt.subplots(1,2)
axes[0].scatter(X.iloc[:,0], X.iloc[:,1], c=y)
axes[0].set_xlabel('x1')
axes[0].set_ylabel('x2')
axes[0].set_title('Before PCA')
axes[1].scatter(X_new[:,0], X_new[:,1], c=y)
axes[1].set_xlabel('PC1')
axes[1].set_ylabel('PC2')
axes[1].set_title('After PCA')
plt.show()

它导致出现此错误:

代码语言:javascript
运行
复制
ValueError: RGBA values should be within 0-1 range

X是特征的预处理矩阵,包含196个样本和59个特征。而y是因变量,包含两个类0,1。

以下是完整的错误消息:

代码语言:javascript
运行
复制
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-109-2c4f74ddce3f> in <module>
      1 fig, axes = plt.subplots(1,2)
----> 2 axes[0].scatter(X.iloc[:,0], X.iloc[:,1], c=y)
      3 axes[0].set_xlabel('x1')
      4 axes[0].set_ylabel('x2')
      5 axes[0].set_title('Before PCA')

~/anaconda3/lib/python3.7/site-packages/matplotlib/__init__.py in inner(ax, data, *args, **kwargs)
   1597     def inner(ax, *args, data=None, **kwargs):
   1598         if data is None:
-> 1599             return func(ax, *map(sanitize_sequence, args), **kwargs)
   1600 
   1601         bound = new_sig.bind(ax, *args, **kwargs)

~/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_axes.py in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, plotnonfinite, **kwargs)
   4495                 offsets=offsets,
   4496                 transOffset=kwargs.pop('transform', self.transData),
-> 4497                 alpha=alpha
   4498                 )
   4499         collection.set_transform(mtransforms.IdentityTransform())

~/anaconda3/lib/python3.7/site-packages/matplotlib/collections.py in __init__(self, paths, sizes, **kwargs)
    881         """
    882 
--> 883         Collection.__init__(self, **kwargs)
    884         self.set_paths(paths)
    885         self.set_sizes(sizes)

~/anaconda3/lib/python3.7/site-packages/matplotlib/collections.py in __init__(self, edgecolors, facecolors, linewidths, linestyles, capstyle, joinstyle, antialiaseds, offsets, transOffset, norm, cmap, pickradius, hatch, urls, offset_position, zorder, **kwargs)
    125 
    126         self._hatch_color = mcolors.to_rgba(mpl.rcParams['hatch.color'])
--> 127         self.set_facecolor(facecolors)
    128         self.set_edgecolor(edgecolors)
    129         self.set_linewidth(linewidths)

~/anaconda3/lib/python3.7/site-packages/matplotlib/collections.py in set_facecolor(self, c)
    676         """
    677         self._original_facecolor = c
--> 678         self._set_facecolor(c)
    679 
    680     def get_facecolor(self):

~/anaconda3/lib/python3.7/site-packages/matplotlib/collections.py in _set_facecolor(self, c)
    659         except AttributeError:
    660             pass
--> 661         self._facecolors = mcolors.to_rgba_array(c, self._alpha)
    662         self.stale = True
    663 

~/anaconda3/lib/python3.7/site-packages/matplotlib/colors.py in to_rgba_array(c, alpha)
    277             result[mask] = 0
    278         if np.any((result < 0) | (result > 1)):
--> 279             raise ValueError("RGBA values should be within 0-1 range")
    280         return result
    281     # Handle single values.

ValueError: RGBA values should be within 0-1 range

我不知道是什么导致了这一错误,并希望帮助解决这一问题。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-16 12:40:09

可以通过以下几种方式给出c=ax.scatter参数:

  • 用cmap和范数映射到颜色的n个数字的标量或序列。所以一个数字,或者像列表一样的一维数列。
  • 一个2D数组,其中行是RGB或RGBA。比如[[1,0,0], [0,0,1]]之类的东西。所有这些值都需要介于0到1之间。而且,每个条目应该有3( RGB)或4( RGBA)值。
  • 长度为n.例如["red", "#B789C0", "turquoise"]的一系列颜色
  • 单一颜色格式字符串。例如"cornflowerblue"

现在,当给定一个数字数组时,为了能够区分第一种情况和第二种情况,matplotlib只查看数组维度。如果是1D,matplotlib假定为第一种情况。对于2D,它假定为第二种情况。注意,Nx11xN数组也被认为是2D的。您可以使用np.squeeze()“挤出”虚拟的第二维度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71437564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档