如何使用python绘制散点图?

Posted

技术标签:

【中文标题】如何使用python绘制散点图?【英文标题】:How to plot scatter plot using python? 【发布时间】:2020-09-14 16:26:12 【问题描述】:

我已使用此代码创建集群,我想绘制集群的散点图。 vectorAssembles_01 生成具有 ID 和特征的数据。两者都应该用于绘制散点图。当我在 google Collab 中运行代码时,我收到一条错误消息,指出 RecursionError:比较中超出了最大递归深度。如果我错了,请纠正。

from pyspark.ml.clustering import KMeans
from pyspark.ml.feature import VectorAssembler
import numpy as np
import matplotlib.pyplot as plt

FEATURES_COL = ['Height(CM)', 'Weight(KG)', 
                      'Crossing', 'Finishing', 'HeadingAccuracy', 
                      'ShortPassing', 'Volleys', 'Dribbling', 'Curve',
                      'FKAccuracy', 'LongPassing', 'BallControl', 
                      'Acceleration', 'SprintSpeed', 'Agility', 
                      'Reactions', 'Balance', 'ShotPower', 'Jumping', 
                      'Stamina', 'Strength', 'LongShots', 'Aggression', 
                      'Interceptions', 'Positioning', 'Vision', 'Penalties', 
                      'Composure', 'Marking', 'StandingTackle', 'SlidingTackle']

vecAssembler_01 = VectorAssembler(inputCols=FEATURES_COL, outputCol="features")
df_kmeansn = vecAssembler_01.transform(df).select('ID','features')
df_kmeansn.show()
#df_kmeansn.plot("ID","fearures",kind="Scatter")
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
x = df_kmeansn.ID
y = df_kmeansn.features
ax.scatter(x, y, alpha=0.8, edgecolors='none')

df_kmeansn的输出如下图。

【问题讨论】:

scatter 仅将 xy 作为一维数字数组。您的 y 是一维数组。 是的,在我的例子中 y 是一维数组。但是我可以如何在散点图中仅绘制 y 。谢谢 哪一行引发了错误? @andhrabullodu 如果你想绘制一维数据,你需要直方图或条形图,而不是散点图 【参考方案1】:

我不确定你是否可以直接绘制 Spark Dataframe,也许你应该先调用“to_pandas”

# ...

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

df_pandas = df_kmeansn.to_pandas()

x = df_pandas.ID
y = df_pandas.features
ax.scatter(x, y, alpha=0.8, edgecolors='none')

【讨论】:

以上是关于如何使用python绘制散点图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个 y 刻度上绘制散点图

彩色折线散点图python怎么指定数据

如何使用 plotly 绘制特定行的散点图

python 绘制三维图形、三维数据散点图

可视化实验十:利用Python绘制棒图散点图

可视化实验十:利用Python绘制棒图散点图