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

如何在Python的lets-plot中使用scale_color_manual()自定义颜色

在Python Lets-Plot中手动设置分组颜色

原代码及输出

我用Python Lets-Plot绘制散点图的代码:

import pandas as pd
from lets_plot import *
LetsPlot.setup_html()

data = pd.read_csv('https://raw.githubusercontent.com/JetBrains/lets-plot-docs/master/data/mpg2.csv')

ggplot(data, aes(x="engine horsepower", y="miles per gallon")) + geom_point(aes(color="origin of car"))

输出的图表:
散点图

R ggplot2中的实现方式

在R的ggplot2里,我会通过以下代码手动设置各分组的颜色:

... + scale_color_manual(values = c("US" = "red", "Asia" = "green", "Europe" = "blue"))

问题

请问在Python的Lets-Plot库中,怎么实现同样的手动设置颜色功能?我查过Lets-Plot的官方文档,但没找到解决方案。


解决方案

在Python Lets-Plot中,scale_color_manual()的用法和R ggplot2高度一致,直接通过values参数指定每个分类对应的颜色即可,参数支持两种形式:

  • 字典形式:键是分类标签,值是对应的颜色(和R的命名向量逻辑完全匹配)
  • 列表形式:按数据中分类的默认顺序依次传入颜色值

完整示例代码

import pandas as pd
from lets_plot import *
LetsPlot.setup_html()

data = pd.read_csv('https://raw.githubusercontent.com/JetBrains/lets-plot-docs/master/data/mpg2.csv')

# 使用字典指定分类颜色
ggplot(data, aes(x="engine horsepower", y="miles per gallon")) + \
    geom_point(aes(color="origin of car")) + \
    scale_color_manual(values={"US": "red", "Asia": "green", "Europe": "blue"})

若不确定分类顺序

可以先查看数据中origin of car列的唯一值顺序:

print(data["origin of car"].unique())

再按顺序传入颜色列表:

scale_color_manual(values=["red", "green", "blue"])

这样就能实现和R中完全相同的手动颜色定制效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:32:21