r - 使用 gghighlight 包标记点时如何保留图表图例
问题描述
我有一个看起来像这样的数据框:
rowname Class Sec ES.2um Mean_WPBs ES.2um_ZS Mean_ES VWF_Sec name
1 Formin HAI 113.37340 147.1792 0.16078492 131.69309 112.5219 DIAPH1
2 Formin PMA 43.90661 121.9017 -0.11594028 75.37296 137.4212 FMN2
3 Septin HAI 64.32138 132.7591 -0.16218581 66.23765 150.9011 SEPTIN5
4 Septin PMA 53.15791 145.7871 -0.86969449 81.92690 140.2647 LRCH3
5 Arp2/3 PMA 68.67222 161.0516 -0.05404113 82.51804 158.2623 ARPC3
6 Arp2/3 HAI 71.00643 149.0704 -0.38119473 82.91458 130.5494 WASF3
在“Sec”列中,该行可以是“HAI”或“PMA”。我目前正在使用 gghighlight 来识别一类蛋白质:
plot_ll <- ggplot(df, aes(ES.2um_ZS, VWF_Sec, col = Sec,)) +
geom_point(size = 2.5) +
geom_point(aes(col=Sec)) +
geom_point() +
labs (col="Secretaogue") +
xlim(-1.25,0.7) + ylim(70,178) +
scale_colour_manual(values=c("HAI" = "blue", "PMA" = "red")) +
gghighlight(Class == "Formin", use_direct_label = FALSE, label_key = name, unhighlighted_colour = alpha("green", 0.0)) +
ggtitle("Formin Proteins Highlighted") +
theme_bw() +
theme(plot.title = element_text(hjust =0.5)) +
xlab("Mean Exit Site Z-Score (Area >2um)") + ylab("Secretion") +
geom_hline(yintercept = mean_VWF, color = "black", linetype = "dashed") +
annotate("text", -1.2, 173, label="Mean", color = "black") +
geom_vline (xintercept = mean_ES.Z, color = "black", linetype = "dashed") +
annotate("text", 0.5, 70, label = "Mean", color = "black")
这给出了如下所示的内容(抱歉,这与上面的示例数据框不太一样,但出于问题的目的,该数据将给出类似的图表):
请注意,gghighlight 正在工作,只是漂白点的 alpha 值设置为 0,因此您看不到它们。
我还想用“名称”列中的蛋白质名称标记点,因此打开了 use_direct_label:
plot_ll <- ggplot(df, aes(ES.2um_ZS, VWF_Sec, col = Sec,)) +
geom_point(size = 2.5) +
geom_point(aes(col=Sec)) +
geom_point() +
labs (col="Secretaogue") +
xlim(-1.25,0.7) + ylim(70,178) +
scale_colour_manual(values=c("HAI" = "blue", "PMA" = "red")) +
gghighlight(Class == "Formin", use_direct_label = TRUE, label_key = name, unhighlighted_colour = alpha("green", 0.0)) +
ggtitle("Formin Proteins Highlighted") +
theme_bw() +
theme(plot.title = element_text(hjust =0.5)) +
xlab("Mean Exit Site Z-Score (Area >2um)") +
ylab("Secretion") +
geom_hline(yintercept = mean_VWF, color = "black", linetype = "dashed") +
annotate("text", -1.2, 173, label="Mean", color = "black") +
geom_vline (xintercept = mean_ES.Z, color = "black", linetype = "dashed") +
annotate("text", 0.5, 70, label = "Mean", color = "black")
这当然摆脱了传说。但是,现在无法知道哪些是“HAI”点,哪些是“PMA”:
如何保留图例以区分 HAI 和 PMA,同时用相应的蛋白质名称标记每个点?
一种方法可能是手动添加图例 - 这可能吗?
任何帮助将非常感激
解决方案
推荐阅读
- python - 如何检查脚本是在本地运行还是在 azure devops 上运行
- javascript - 如何在 d3.js 中检查数据是否分层
- c - 更改 void 指针指向的值
- angular11 - Angular 11:Dexie 动态创建的商店,在对表执行搜索时出现 InvalidTableError
- java - 什么是默认的 Java GC 参数
- postgresql - 从 postgres 函数返回多个输出变量
- r - 校正多个估算数据集中的异方差
- workflow - NetSuite - 将订单自定义工作流更改状态转移到拒绝
- javascript - 值需要根据下拉列表中的选择进行更改
- java - Java JOOQ 与 SQL Server:缓存查询