You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在scatter plots中标记dataframe内value2<0.6的Value1数据为红色?

实现方法:两种常用可视化方案

我来给你两种实用的实现思路,都是Python里主流的可视化方案,你可以按需选择:


方案1:用Matplotlib手动区分两类点

这个方法逻辑直观,适合需要精细控制绘图细节的场景:

  1. 先导入必要的库,准备示例数据(你可以直接替换成自己的DataFrame)
  2. 创建一个布尔掩码,精准筛选出Value2 < 0.6的行
  3. 分别绘制两类数据点:默认颜色画正常点,红色画符合条件的点(注意把红色点的层级设高,避免被默认点挡住)
  4. 最后添加图例、标签等美化元素
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 生成示例DataFrame(替换成你的真实数据)
np.random.seed(42)
df = pd.DataFrame({
    "Value1": np.random.randn(100),
    "Value2": np.random.rand(100)  # 生成0-1之间的随机数模拟数据
})

# 创建掩码:筛选Value2 < 0.6的行
mask = df["Value2"] < 0.6

# 绘制散点图
plt.figure(figsize=(10, 6))
# 先画默认颜色的点
plt.scatter(df[~mask]["Value1"], df[~mask]["Value2"], label="Value2 ≥ 0.6")
# 再画红色的点,zorder设高确保不会被遮挡
plt.scatter(df[mask]["Value1"], df[mask]["Value2"], color="red", label="Value2 < 0.6", zorder=5)

# 添加标签和图例
plt.xlabel("Value1")
plt.ylabel("Value2")
plt.title("Scatter Plot with Red Markers for Value2 < 0.6")
plt.legend()
plt.show()

方案2:用Seaborn快速实现(更简洁)

Seaborn是基于Matplotlib的高级库,代码更简洁,适合快速出图的场景:

我们可以先给DataFrame新增一个分类列,标记每个点属于哪一类,然后用hue参数自动区分颜色,还能一键生成图例:

import seaborn as sns
import pandas as pd
import numpy as np

# 生成示例DataFrame
np.random.seed(42)
df = pd.DataFrame({
    "Value1": np.random.randn(100),
    "Value2": np.random.rand(100)
})

# 新增分类列:标记是否满足Value2 < 0.6
df["Category"] = np.where(df["Value2"] < 0.6, "Value2 < 0.6", "Value2 ≥ 0.6")

# 绘制散点图
plt.figure(figsize=(10, 6))
# 用palette指定目标类别的颜色为红色,其余用默认或自定义颜色
sns.scatterplot(data=df, x="Value1", y="Value2", hue="Category", palette={"Value2 < 0.6": "red", "Value2 ≥ 0.6": "blue"})
plt.title("Scatter Plot with Red Markers for Value2 < 0.6")
plt.show()

如果不需要自定义非目标点的颜色,直接去掉palette参数就行,Seaborn会自动分配配色,只需要确保把红色指定给Value2 < 0.6的类别。


内容的提问来源于stack exchange,提问作者user96564

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:38:27