Python 条形图的颜色与散点图的颜色相同

Python 条形图的颜色与散点图的颜色相同,python,pandas,numpy,matplotlib,Python,Pandas,Numpy,Matplotlib,我想创建一个条形图,使条形图的颜色与先前绘制的散点图的颜色相对应。以下是一个例子: 将熊猫作为pd导入 将numpy作为np导入 将matplotlib.pyplot作为plt导入 从sklearn.cluster导入KMeans 数组=np.random.rand(100,2) kmeans=kmeans(n_集群=10) kmeans.fit(数组) y_kmeans=kmeans.predict(数组) y_kmeans_df=pd.DataFrame(y_kmeans) y_kmeans

我想创建一个条形图,使条形图的颜色与先前绘制的散点图的颜色相对应。以下是一个例子:

将熊猫作为pd导入
将numpy作为np导入
将matplotlib.pyplot作为plt导入
从sklearn.cluster导入KMeans
数组=np.random.rand(100,2)
kmeans=kmeans(n_集群=10)
kmeans.fit(数组)
y_kmeans=kmeans.predict(数组)
y_kmeans_df=pd.DataFrame(y_kmeans)
y_kmeans_df.columns=['Values']
y_kmeans_df.Values.value_计数(normalize=True)
图(ax0,ax1)=plt.子批次(2,1,figsize=(10,15))
ax0.scatter(数组[:,0],数组[:,1],c=y_kmeans,s=50,cmap='viridis')
ax1.bar(y_kmeans_df.Values.value_counts(sort=False))索引,
y_kmeans_df.Values.value_计数(normalize=True,sort=True).Values)
ax1.set_xticks(y_kmeans_df.Values.value_counts(sort=False).index)
ax1.set_xticklabel(y_kmeans_df.Values.value_counts(sort=True.index)
plt.show()


因此,使用matplotlib,我希望在本例中,条形图的颜色与其对应的簇的颜色相同。我不知道如何实现这一点。

尝试使用
plt。在ax.bar绘图中获取\u cmap
color
参数:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

array = np.random.rand(100,2)
kmeans = KMeans(n_clusters=10)
kmeans.fit(array)
y_kmeans = kmeans.predict(array)

y_kmeans_df = pd.DataFrame(y_kmeans)
y_kmeans_df.columns = ['Values']
y_kmeans_df.Values.value_counts(normalize=True)

fig, (ax0,ax1) = plt.subplots(2,1,figsize=(10,15))
ax0.scatter(array[:,0], array[:,1], c=y_kmeans, s=50, cmap='viridis')

vir = plt.get_cmap('viridis', 10)

ax1.bar(y_kmeans_df.Values.value_counts(sort=False).index ,
       y_kmeans_df.Values.value_counts(normalize=True, sort=True).values,
       color=vir(y_kmeans_df.Values.value_counts(sort=True).index))
ax1.set_xticks(y_kmeans_df.Values.value_counts(sort=False).index)
ax1.set_xticklabels(y_kmeans_df.Values.value_counts(sort=True).index)

plt.show()
输出:


我将
color=vir(y\u kmeans\u df.Values.value\u counts(sort=False)。index
更改为
color=vir(y\u kmeans\u df.Values.value\u counts(sort=True)。index)
并且它给了我想要的。谢谢!我修改了解决方案以匹配您想要的结果。欢迎您。编码快乐!