- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个二维点数据集,我想使用 K 均值技术对其进行分类。
数据:
import numpy as np
x1 = np.array([3,1,1,2,1,6,6,6,5,6,7,8,9,8,9,9,8])
x2 = np.array([5,4,5,6,5,8,6,7,6,7,1,2,1,2,3,2,3])
X = np.array(list(zip(x1,x2))).reshape(len(x1), 2)
我想对从 1 到 9 的簇数量进行迭代,以测试散点图上的最终分布。所以我计算了数据集的质心。
from scipy.spatial.distance import cdist
import matplotlib.pyplot as plt
max_k = 10
K = range(1,max_k)
centroid = [sum(X)/len(X) for k in K]
sst = sum(np.min(cdist(X, centroid, "euclidean"), axis = 1))
然后使用 cm.Spectral
为每次迭代创建一个包含一种 rgb
颜色的调色板。
color_palette = [plt.cm.Spectral(float(k)/max_k) for k in K]
并在迭代 k
的循环中使用它:
from sklearn.cluster import KMeans
import pandas as pd
ssw = []
for k in K:
kmeanModel = KMeans(n_clusters=k).fit(X)
centers = pd.DataFrame(kmeanModel.cluster_centers_)
labels = kmeanModel.labels_
ssw_k = sum(np.min(cdist(X, kmeanModel.cluster_centers_), axis = 1))
ssw.append(ssw_k)
label_color = [color_palette[i] for i in labels]
plt.plot()
plt.xlim([0,10])
plt.ylim([0,10])
plt.title("Clustering for k = %s"%str(k))
plt.scatter(x1,x2, c=label_color)
plt.scatter(centers[0], centers[1], c=color_palette, marker = "x")
plt.show()
我正在我的 Python 3.7.3 版本中复制这段代码,并且从这段代码的源代码中我知道它在旧版本中运行良好。当 matplotlib.pyplot.cm
中的函数 Spectral
以小写形式编写时 (spectral
)。
结果是下一个。
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~/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, **kwargs)
4237 valid_shape = False
-> 4238 raise ValueError
4239 except ValueError:
ValueError:
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-26-2f513f9c616c> in <module>
24 plt.title("Clustering for k = %s"%str(k))
25 plt.scatter(x1,x2, c=label_color)
---> 26 plt.scatter(centers[0], centers[1], c=[i for i in color_palette], marker = "x")
27 plt.show()
~/anaconda3/lib/python3.7/site-packages/matplotlib/pyplot.py in scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, data, **kwargs)
2860 vmin=vmin, vmax=vmax, alpha=alpha, linewidths=linewidths,
2861 verts=verts, edgecolors=edgecolors, **({"data": data} if data
-> 2862 is not None else {}), **kwargs)
2863 sci(__ret)
2864 return __ret
~/anaconda3/lib/python3.7/site-packages/matplotlib/__init__.py in inner(ax, data, *args, **kwargs)
1808 "the Matplotlib list!)" % (label_namer, func.__name__),
1809 RuntimeWarning, stacklevel=2)
-> 1810 return func(ax, *args, **kwargs)
1811
1812 inner.__doc__ = _add_data_doc(inner.__doc__,
~/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, **kwargs)
4243 "acceptable for use with 'x' with size {xs}, "
4244 "'y' with size {ys}."
-> 4245 .format(nc=n_elem, xs=x.size, ys=y.size)
4246 )
4247 # Both the mapping *and* the RGBA conversion failed: pretty
ValueError: 'c' argument has 9 elements, which is not acceptable for use with 'x' with size 1, 'y' with size 1.
我希望每个组的中心颜色与组本身一样。
提前致谢。
最佳答案
尝试通过与 x 和 y 值的长度相对应的索引来使用相应大小的调色板,如下所示。
P.S:您的代码在 matplotlib 2.2.2
中运行良好
for i, k in enumerate(K):
# rest of your code
plt.scatter(centers[0], centers[1], c=color_palette[0:i+1], marker = "x")
print (centers[0].values)
plt.show()
关于python - 如何在循环中使用使用 pyplot.Spectral 创建的调色板来绘制散点图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56936255/
是否可以更改 Matplotlib 在为图形线条生成自己的颜色时循环使用的颜色?我正在使用 pylab 模块。 from pylab import * import matplotlib.cm as
R中是否有可以处理许多数据类的调色板的好包?我有 16 个连续数据类。我试过 RColorBrewer 但它最多有 9 个数据类,我也试过 Rainbow() 但它对顺序数据没有吸引力。谢谢 最佳答案
一些与 previous question 相关的内容 我想采用 gnuplot 的默认(pm3d 默认)调色板,并在 X 处放置一个白色值,并将任何 >=X 的内容设置为白色,但其余部分( 例如,我
我正在尝试使用调用 Web 服务的结果(这是一个分段列表)来填充 Tapestry 5 中的调色板组件。 Segment 是一个普通的类,具有一些属性,如标题...我想将标题显示为可用、选定的调色板列
我最近在 Eclipse 4.3 (Kepler) 上安装了 windowBuilder 工具。当我尝试在布局设计器上进行一些工作时,我的调色板窗口上不会出现任何组件。只有一些组件,如“布局 ->布局
我计划从我的 RecyclerView 中的每个 bitmap 中获取每一种鲜艳的颜色,并将其设置为我的文本的背景。所以我尝试了以下: Picasso.with(ctx)
如何使用D3 Palettes在 Bokeh ?我尝试以这种方式导入,但收到未解析的引用错误消息 from bokeh.palettes import Category20 Bokeh 版本: pri
Seaborn 允许定义包含多种颜色的调色板,这对具有多行的图表很有用。但是,当将调色板设置为具有多种颜色的调色板时,仅使用前六种颜色,之后颜色会循环使用,因此很难区分线条。这可以通过显式调用调色板来
实际上我正在开发一个包含 Material 设计抽屉导航的 android 应用程序,我想每 5 分钟动态更改状态栏、操作栏、文本颜色的颜色。实际上我正在使用支持库主题来支持所有 android手机。
我为一个项目编写了一些自定义的复合小部件,并将它们编译成一个单独的 jar 文件。我将这个 jar 文件添加到 GWT 项目的构建路径中。当我尝试将小部件添加到调色板时(通过按“选择组件”按钮),我可
我在缓冲区(类型 - 长型)中有一个来自 32 位扫描仪的图像数据。 例如buffer[0]对应的像素值为952即[184, 3, 0, 0] <-[R,G,B,A]; 我想在屏幕上显示/绘画/绘图;
我的公司有一个正式的调色板,所以我需要在我的 seaborn 图表中使用这些颜色。因此,我想设置默认的 seaborn 调色板,并为这些颜色提供易于使用的名称,例如“p”代表紫色,“g”代表绿色。 这
我试图通过一个主要是数字的因素为 ggplot 着色,如下所示: iris %>% ggplot(aes(Sepal.Length, Sepal.Width, color = cut(Petal.
我在 Kubuntu 12.04 上使用 Netbeans 7。我这样启动 Netbeans: netbeans --cp:a /usr/share/java/xercesImpl.jar & Net
我已经用我选择的颜色制作了颜色图,但是我想将其转换为可用于“调色”seaborn 绘图的调色板。这可能吗?如果可能的话,怎么可能? 我用过... cmap = pl.colors.LinearSegm
我需要动态生成自定义调色板来为我的 Angular 应用配置主题。 可用的默认 Material 调色板:https://material.io/guidelines/style/color.html
首先,我从未使用过 Palette,当我想开始使用它时,我看到所有教程和博客都在谈论 v21 而不是 v22。 我的问题是我有一个 Swatch(在 swatch 数组 [palette.getSwa
我如何使用此工具中没有的颜色构建自定义 MDL:https://getmdl.io/customize/index.html 我想要那些颜色: 原色:红色 400 (#EF5350) 二次色:琥珀色
如何知道调色板png是否带有alpha?我获取有关图像 png_get_IHDR 的信息 之后我查看color_type - PNG_COLOR_TYPE_PALETTE 但是我找不到如何知道这个 p
有没有一种简单的方法可以将真彩色图像(在本例中为 24 位,位图)转换为 1Bpp 图像(调色板,转换为位图)。 我知道 imagemagick convert 可以进行转换,但出于某种原因,当我尝试
我是一名优秀的程序员,十分优秀!