matplotlib 如何绘制3列散点图

0dxa2lsx  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(213)

代码如下

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

df = pd.DataFrame(np.random.rand(10,3), columns=["A", "B","C"])
km = KMeans(n_clusters=3).fit(df)
df['cluster_id'] = km.labels_
test = {0:"Blue", 1:"Red", 2:"Green"}
#sns.scatterplot()
plt.show()

我试图在没有列约束x,y的情况下绘图。我需要绘制任意数量的列just want to plot the cluster graph

fjnneemd

fjnneemd1#

方法1:如果你只有3列,没有一列可以作为“色调”

import matplotlib.pyplot as plt

fig = plt.figure()

ax = fig.add_subplot( projection='3d')

ax.scatter(x, y, z,marker='o')

plt.show()

x、y和z是等长 Dataframe 中的列(行数)
方法2:如果你有3列(等于行数)要绘制,第4列可以用作色调。第4列通常是你的聚类

import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt
from matplotlib.colors import ListedColormap

plt.rcParams["figure.figsize"] = [8, 8]

x = df['pc_1']
y = df['pc_2']
z = df['pc_3']

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
cmap = ListedColormap(sns.color_palette("husl", 256).as_hex())
sc = ax.scatter(x, y, z, c = df['Clusters'], marker='o', cmap=cmap)
plt.legend(*sc.legend_elements(), bbox_to_anchor=(1.2, 1))

plt.show()

相关问题