matplotlib 如何绘制3列散点图

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

代码如下

  1. import numpy as np
  2. import pandas as pd
  3. from matplotlib import pyplot as plt
  4. from sklearn.cluster import KMeans
  5. import seaborn as sns
  6. df = pd.DataFrame(np.random.rand(10,3), columns=["A", "B","C"])
  7. km = KMeans(n_clusters=3).fit(df)
  8. df['cluster_id'] = km.labels_
  9. test = {0:"Blue", 1:"Red", 2:"Green"}
  10. #sns.scatterplot()
  11. plt.show()

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

fjnneemd

fjnneemd1#

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

  1. import matplotlib.pyplot as plt
  2. fig = plt.figure()
  3. ax = fig.add_subplot( projection='3d')
  4. ax.scatter(x, y, z,marker='o')
  5. plt.show()

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

  1. import numpy as np
  2. import seaborn as sns
  3. from matplotlib import pyplot as plt
  4. from matplotlib.colors import ListedColormap
  5. plt.rcParams["figure.figsize"] = [8, 8]
  6. x = df['pc_1']
  7. y = df['pc_2']
  8. z = df['pc_3']
  9. fig = plt.figure()
  10. ax = fig.add_subplot(projection='3d')
  11. cmap = ListedColormap(sns.color_palette("husl", 256).as_hex())
  12. sc = ax.scatter(x, y, z, c = df['Clusters'], marker='o', cmap=cmap)
  13. plt.legend(*sc.legend_elements(), bbox_to_anchor=(1.2, 1))
  14. plt.show()
展开查看全部

相关问题