gpt4 book ai didi

python - 条形图与散点图的颜色相同

转载 作者:行者123 更新时间:2023-12-04 09:29:26 25 4
gpt4 key购买 nike

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

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')

ax1.bar(y_kmeans_df.Values.value_counts(sort=False).index ,
y_kmeans_df.Values.value_counts(normalize=True, sort=True).values)
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()
enter image description here
因此,在这种情况下,使用 matplotlib,我希望条形颜色与其对应的集群颜色相同。我不确定如何实现这一目标。

最佳答案

使用 plt.get_cmap 试试这个和 color ax.bar 图中的参数:

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()
输出:
enter image description here

关于python - 条形图与散点图的颜色相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62906309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com