matplotlib - 使用散点图 pyspark 使用标签命名数据点
问题描述
我有以下数据框
----------------------------------------
|date |student_name| count | cluster|
|------------|---------- |-------|--------|
|234454333333|A |50 |2 |
|345000004000|B |100 | 4 |
|345000004050|C |95 | 4 |
------------------------------------------
使用这个数据框,我正在绘制一个散点图,如下所示
c1 = data_pd[data_pd.cluster == 0]
c2 = data_pd[data_pd.cluster == 1]
c3 = data_pd[data_pd.cluster == 2]
c4 = data_pd[data_pd.cluster == 3]
c5 = data_pd[data_pd.cluster == 4]
plt.scatter(c1.date, c1['count'],color='green')
plt.scatter(c2.date, c2['count'],color='blue')
plt.scatter(c3.date, c3['count'],color='red')
plt.scatter(c4.date, c4['count'],color='pink')
plt.scatter(c5.date, c5['count'],color='yellow')
plt.xlabel('date')
plt.ylabel('count')
我想用数据框中的相应 student_name 值命名每个数据点。如何使用 pyspark 实现这一目标?
解决方案
我生成了一个小示例,只是为了让您了解如何使用annotate
.
import random
from pyspark.sql import SparkSession
import matplotlib.pyplot as plt
def plot_cluster(cluster, color, data_pd):
data = data_pd[data_pd.cluster == cluster]
plt.scatter(data.date, data["count"], color=color)
for i, label in enumerate(data["student_name"]):
plt.annotate(label, (data.date.iloc[i], data["count"].iloc[i]))
if __name__ == "__main__":
spark = SparkSession.builder.getOrCreate()
data = [
{
"date": 234454333333 + random.randrange(50000),
"student_name": random.choice(["A", "B", "C"]),
"count": random.randrange(20, 100),
"cluster": random.randrange(5),
}
for _ in range(100)
]
df = spark.createDataFrame(data)
data_pd = df.toPandas()
clusters = [0, 1, 2, 3, 4]
colors = ["green", "blue", "red", "pink", "yellow"]
for cluster, color in zip(clusters, colors):
plot_cluster(cluster, color, data_pd)
plt.xlabel("date")
plt.ylabel("count")
plt.show()
X轴显然应该被照顾,但在这里没关系
数字:
推荐阅读
- node.js - 安装节点模块时找不到模块“genfun”
- ios - UIView 的继承,用于添加新逻辑或扩展 UIViewController
- c++ - 由于 alpha 值,将一张图像混合到另一张图像会产生不正确的图像
- actionscript-3 - AS3扩展圆形时如何创建多种颜色?
- javascript - 停止变量干扰/变量范围
- ngxs - 将 NGSX 与路由器插件模块一起使用
- ceylon - 在不涉及 Null 的情况下满足 'Iterable' 接口
- wordpress - 视觉作曲家和用户角色问题
- forms - 我面临 Laravel 集体/html 类表单未找到错误
- javascript - 动态创建输入并检索其值以通过 Ajax 请求发送