如何在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
相关产品推荐
相关产品推荐

