修复 ggplot2 散点图中的图例

发布于 2025-01-15 22:46:31 字数 6839 浏览 1 评论 0原文

我的文件中有下表,例如 Table.txt


ID  UMAP1   UMAP2   colors  tissue  shape
BR1.RPM.    -6.24624137750478   8.99732825037093    darkgrey    Brain   21
BR2.RPM.    -4.94022374995909   9.64415254298357    darkgrey    Brain   21
BR3.RPM.    -6.18653161030939   10.8053867159454    darkgrey    Brain   21
BR4.RPM.    -5.43379029546665   10.3241840540605    darkgrey    Brain   21
BR5.RPM.    -6.46826671610736   10.0162047226128    darkgrey    Brain   21
CO1.RPM.    8.86122160028818    -10.8480078113176   forestgreen Colon   21
CO2.RPM.    7.80124379636093    -10.8247843040215   forestgreen Colon   21
CO3.RPM.    8.7898158134908 -11.9994744387119   forestgreen Colon   21
CO5.RPM.    -0.211040103092488  -15.3140536298622   forestgreen Colon   21
DU1.RPM.    2.00335081362765    -13.4547195186791   olivedrab4  Duodenum    21
DU2.RPM.    1.06254721897261    -15.2328022664155   olivedrab4  Duodenum    21
DU5.RPM.    0.441952327756353   -11.6575129379758   olivedrab4  Duodenum    21
HE1.RPM.    3.99477353770135    10.6553694455463    hotpink3    Heart   21
HE2.RPM.    4.88118814766788    9.93852960962403    hotpink3    Heart   21
HE3.RPM.    5.21631629029322    10.6650139934156    hotpink3    Heart   21
HE4.RPM.    9.10821235021812    12.9856956614779    hotpink3    Heart   21
HE5.RPM.    5.78207690863004    11.0933139113898    hotpink3    Heart   21
IL1.RPM.    6.95565094553292    -12.5702089865116   palegreen3  Ileum   21
IL2.RPM.    1.01269742361358    -14.1035198369691   palegreen3  Ileum   21
IL3.RPM.    -1.17035543321198   -13.6340301656585   palegreen3  Ileum   21
IL4.RPM.    8.40353989576425    -11.6513183019901   palegreen3  Ileum   21
JE1.RPM.    2.9910580757924 -14.4211713133721   darkseagreen    Jejunum 21
JE2.RPM.    2.07079714594886    -15.3772976319669   darkseagreen    Jejunum 21
JE3.RPM.    -1.05329335978342   -14.5968398106159   darkseagreen    Jejunum 21
JE4.RPM.    3.41624683267929    -13.4919035473171   darkseagreen    Jejunum 21
JE5.RPM.    4.88425475465244    -13.1567652554822   darkseagreen    Jejunum 21
KI1.RPM.    -10.6374735982799   4.92145224474023    orange3 Kidney  21
KI2.RPM.    -11.2833854978983   4.51937765581112    orange3 Kidney  21
KI3.RPM.    -11.1470520844353   5.73545480553504    orange3 Kidney  21
KI4.RPM.    -10.1513698150707   5.35434236921414    orange3 Kidney  21
KI5.RPM.    -10.177160813581    6.20659526440371    orange3 Kidney  21
LI1.RPM.    -5.70526388552766   2.73195871448176    sienna  Liver   21
LI2.RPM.    -6.17843878586395   1.90790108771143    sienna  Liver   21
LI3.RPM.    -7.0007572520014    2.65058984741689    sienna  Liver   21
LI4.RPM.    -5.88973722126037   3.76962066959112    sienna  Liver   21
LI5.RPM.    -6.61112275268653   3.28644045310891    sienna  Liver   21
LU1.RPM.    -4.75953988253826   6.29883048072252    mediumpurple    Lung    21
LU2.RPM.    -3.31384813480563   7.3267440711153 mediumpurple    Lung    21
LU3.RPM.    -5.9590148653142    6.68886573490531    mediumpurple    Lung    21
LU4.RPM.    -4.59224273960628   7.21105859067014    mediumpurple    Lung    21
LU5.RPM.    -5.47580231369125   7.59756752354278    mediumpurple    Lung    21
PA1.RPM.    -4.39428882425657   -1.00591794767983   dodgerblue  Pancreas    21
PA2.RPM.    -4.81692379647447   -0.378627400147651  dodgerblue  Pancreas    21
PA3.RPM.    -5.19468729366945   -1.42084838130265   dodgerblue  Pancreas    21
PA5.RPM.    -5.51778068445221   -0.836836569975335  dodgerblue  Pancreas    21
PL1.RPM.    9.93008906133938    12.6156952554679    red3    Plasma  21
PL2.RPM.    9.54209137127792    13.7400750744851    red3    Plasma  21
PL3.RPM.    10.6344639198137    12.6886944573872    red3    Plasma  21
PL5.RPM.    10.3784631029018    13.7654629384684    red3    Plasma  21
SKI.RPM.    -0.202516945089861  -14.2222474767147   pink2   Skin    21
SM1.RPM.    6.88138601444705    11.6623945678116    plum    Skeletal muscle 21
SM2.RPM.    6.27891336047781    10.3000397477951    plum    Skeletal muscle 21
SM3.RPM.    4.8344444544445 11.9513437182199    plum    Skeletal muscle 21
TE1.RPM.    -0.61587780139837   -12.5741675518115   goldenrod2  Testis  21
TE2.RPM.    7.49521993036915    -11.9671985613382   goldenrod2  Testis  21
TE3.RPM.    7.68201253927473    -13.3154305341953   goldenrod2  Testis  21
Blood   11.7943923259296    13.4515420442054    red3    Plasma  23
Muscle  2.85308339005237    11.1306582760691    plum    Skeletal muscle 23

我想使用 R 中的 ggplot 代码从此表生成散点图,但我无法弄清楚如何修复图例以便正确显示。

我使用以下代码:


Table_UMAP = read.delim("/PATH/Table.txt", header=T, row.names=1)
Table_UMAP$colors <- factor(Table_UMAP$colors, levels=c("darkgrey", "forestgreen", "olivedrab4", "palegreen3", "darkseagreen", "red3", "hotpink3", "plum", "pink2",
                                                        "orange3", "sienna", "mediumpurple", "dodgerblue", "goldenrod2"))
Table_UMAP$tissue <- factor(Table_UMAP$tissue, levels=c("Brain", "Colon", "Duodenum", "Jejunum", "Ileum", "Plasma", "Heart", "Skeletal muscle", "Skin",
                                                        "Kidney", "Liver", "Lung", "Pancreas", "Testis"))
Table_UMAP$shape <- factor(Table_UMAP$shape, levels=c(21, 23))




library(ggplot2)

ggplot(Table_UMAP, aes(x=UMAP1, y=UMAP2, fill=tissue, color=colors)) + 
  geom_point(shape=shape, size=6) + 
  scale_fill_manual(labels = c("Brain", "Colon", "Duodenum", "Jejunum", "Ileum", "Plasma", "Heart", "Skeletal muscle", "Skin",
                               "Kidney", "Liver", "Lung", "Pancreas", "Testis"),
                    values = c("darkgrey", "forestgreen", "olivedrab4", "palegreen3", "darkseagreen", "red3", "hotpink3", "plum", "pink2",
                               "orange3", "sienna", "mediumpurple", "dodgerblue", "goldenrod2")) +
  guides(fill = guide_legend(ncol=2)) +
  ylim(c(-16,15)) + xlim(c(-12,12)) +
  xlab("Component 1") + ylab("Component 2") + 
  theme_bw() +
  theme(legend.position = c(0.22, 0.17), legend.title = element_blank(), legend.text = element_text(size=10),
        legend.background = element_rect(fill = "white", color="black")) +
  theme(axis.text.x = element_text(size=8),
        axis.text.y = element_text(size=8),
        axis.title.x =element_text(size=12, margin = margin(t = 10)),
        axis.title.y =element_text(size=12, margin = margin(r = 10)),
        plot.margin = margin(1, 1, 1, 1, "cm")) +
  theme(panel.border = element_rect(linetype = "solid", size=1, color="black")) +
  guides(fill = guide_legend(override.aes =list(shape = 21)))

此代码生成下图:

在此处输入图像描述

该图看起来如我所愿,但图例除外,图例缺少带有两列的附加行来显示形状差异,其中 21 是“狗”,23 是“其他”。

我怎样才能修复图例?是不是有什么东西我没有添加?

此致。

I have the following table in a file, say called Table.txt:


ID  UMAP1   UMAP2   colors  tissue  shape
BR1.RPM.    -6.24624137750478   8.99732825037093    darkgrey    Brain   21
BR2.RPM.    -4.94022374995909   9.64415254298357    darkgrey    Brain   21
BR3.RPM.    -6.18653161030939   10.8053867159454    darkgrey    Brain   21
BR4.RPM.    -5.43379029546665   10.3241840540605    darkgrey    Brain   21
BR5.RPM.    -6.46826671610736   10.0162047226128    darkgrey    Brain   21
CO1.RPM.    8.86122160028818    -10.8480078113176   forestgreen Colon   21
CO2.RPM.    7.80124379636093    -10.8247843040215   forestgreen Colon   21
CO3.RPM.    8.7898158134908 -11.9994744387119   forestgreen Colon   21
CO5.RPM.    -0.211040103092488  -15.3140536298622   forestgreen Colon   21
DU1.RPM.    2.00335081362765    -13.4547195186791   olivedrab4  Duodenum    21
DU2.RPM.    1.06254721897261    -15.2328022664155   olivedrab4  Duodenum    21
DU5.RPM.    0.441952327756353   -11.6575129379758   olivedrab4  Duodenum    21
HE1.RPM.    3.99477353770135    10.6553694455463    hotpink3    Heart   21
HE2.RPM.    4.88118814766788    9.93852960962403    hotpink3    Heart   21
HE3.RPM.    5.21631629029322    10.6650139934156    hotpink3    Heart   21
HE4.RPM.    9.10821235021812    12.9856956614779    hotpink3    Heart   21
HE5.RPM.    5.78207690863004    11.0933139113898    hotpink3    Heart   21
IL1.RPM.    6.95565094553292    -12.5702089865116   palegreen3  Ileum   21
IL2.RPM.    1.01269742361358    -14.1035198369691   palegreen3  Ileum   21
IL3.RPM.    -1.17035543321198   -13.6340301656585   palegreen3  Ileum   21
IL4.RPM.    8.40353989576425    -11.6513183019901   palegreen3  Ileum   21
JE1.RPM.    2.9910580757924 -14.4211713133721   darkseagreen    Jejunum 21
JE2.RPM.    2.07079714594886    -15.3772976319669   darkseagreen    Jejunum 21
JE3.RPM.    -1.05329335978342   -14.5968398106159   darkseagreen    Jejunum 21
JE4.RPM.    3.41624683267929    -13.4919035473171   darkseagreen    Jejunum 21
JE5.RPM.    4.88425475465244    -13.1567652554822   darkseagreen    Jejunum 21
KI1.RPM.    -10.6374735982799   4.92145224474023    orange3 Kidney  21
KI2.RPM.    -11.2833854978983   4.51937765581112    orange3 Kidney  21
KI3.RPM.    -11.1470520844353   5.73545480553504    orange3 Kidney  21
KI4.RPM.    -10.1513698150707   5.35434236921414    orange3 Kidney  21
KI5.RPM.    -10.177160813581    6.20659526440371    orange3 Kidney  21
LI1.RPM.    -5.70526388552766   2.73195871448176    sienna  Liver   21
LI2.RPM.    -6.17843878586395   1.90790108771143    sienna  Liver   21
LI3.RPM.    -7.0007572520014    2.65058984741689    sienna  Liver   21
LI4.RPM.    -5.88973722126037   3.76962066959112    sienna  Liver   21
LI5.RPM.    -6.61112275268653   3.28644045310891    sienna  Liver   21
LU1.RPM.    -4.75953988253826   6.29883048072252    mediumpurple    Lung    21
LU2.RPM.    -3.31384813480563   7.3267440711153 mediumpurple    Lung    21
LU3.RPM.    -5.9590148653142    6.68886573490531    mediumpurple    Lung    21
LU4.RPM.    -4.59224273960628   7.21105859067014    mediumpurple    Lung    21
LU5.RPM.    -5.47580231369125   7.59756752354278    mediumpurple    Lung    21
PA1.RPM.    -4.39428882425657   -1.00591794767983   dodgerblue  Pancreas    21
PA2.RPM.    -4.81692379647447   -0.378627400147651  dodgerblue  Pancreas    21
PA3.RPM.    -5.19468729366945   -1.42084838130265   dodgerblue  Pancreas    21
PA5.RPM.    -5.51778068445221   -0.836836569975335  dodgerblue  Pancreas    21
PL1.RPM.    9.93008906133938    12.6156952554679    red3    Plasma  21
PL2.RPM.    9.54209137127792    13.7400750744851    red3    Plasma  21
PL3.RPM.    10.6344639198137    12.6886944573872    red3    Plasma  21
PL5.RPM.    10.3784631029018    13.7654629384684    red3    Plasma  21
SKI.RPM.    -0.202516945089861  -14.2222474767147   pink2   Skin    21
SM1.RPM.    6.88138601444705    11.6623945678116    plum    Skeletal muscle 21
SM2.RPM.    6.27891336047781    10.3000397477951    plum    Skeletal muscle 21
SM3.RPM.    4.8344444544445 11.9513437182199    plum    Skeletal muscle 21
TE1.RPM.    -0.61587780139837   -12.5741675518115   goldenrod2  Testis  21
TE2.RPM.    7.49521993036915    -11.9671985613382   goldenrod2  Testis  21
TE3.RPM.    7.68201253927473    -13.3154305341953   goldenrod2  Testis  21
Blood   11.7943923259296    13.4515420442054    red3    Plasma  23
Muscle  2.85308339005237    11.1306582760691    plum    Skeletal muscle 23

I want to generate a scatterplot from this table using ggplot code in R, but I cannot figure it out how to fix the legend so that it is shown properly.

I am using the following code:


Table_UMAP = read.delim("/PATH/Table.txt", header=T, row.names=1)
Table_UMAP$colors <- factor(Table_UMAP$colors, levels=c("darkgrey", "forestgreen", "olivedrab4", "palegreen3", "darkseagreen", "red3", "hotpink3", "plum", "pink2",
                                                        "orange3", "sienna", "mediumpurple", "dodgerblue", "goldenrod2"))
Table_UMAP$tissue <- factor(Table_UMAP$tissue, levels=c("Brain", "Colon", "Duodenum", "Jejunum", "Ileum", "Plasma", "Heart", "Skeletal muscle", "Skin",
                                                        "Kidney", "Liver", "Lung", "Pancreas", "Testis"))
Table_UMAP$shape <- factor(Table_UMAP$shape, levels=c(21, 23))




library(ggplot2)

ggplot(Table_UMAP, aes(x=UMAP1, y=UMAP2, fill=tissue, color=colors)) + 
  geom_point(shape=shape, size=6) + 
  scale_fill_manual(labels = c("Brain", "Colon", "Duodenum", "Jejunum", "Ileum", "Plasma", "Heart", "Skeletal muscle", "Skin",
                               "Kidney", "Liver", "Lung", "Pancreas", "Testis"),
                    values = c("darkgrey", "forestgreen", "olivedrab4", "palegreen3", "darkseagreen", "red3", "hotpink3", "plum", "pink2",
                               "orange3", "sienna", "mediumpurple", "dodgerblue", "goldenrod2")) +
  guides(fill = guide_legend(ncol=2)) +
  ylim(c(-16,15)) + xlim(c(-12,12)) +
  xlab("Component 1") + ylab("Component 2") + 
  theme_bw() +
  theme(legend.position = c(0.22, 0.17), legend.title = element_blank(), legend.text = element_text(size=10),
        legend.background = element_rect(fill = "white", color="black")) +
  theme(axis.text.x = element_text(size=8),
        axis.text.y = element_text(size=8),
        axis.title.x =element_text(size=12, margin = margin(t = 10)),
        axis.title.y =element_text(size=12, margin = margin(r = 10)),
        plot.margin = margin(1, 1, 1, 1, "cm")) +
  theme(panel.border = element_rect(linetype = "solid", size=1, color="black")) +
  guides(fill = guide_legend(override.aes =list(shape = 21)))

This code generates the following figure:

enter image description here

The graph looks as I want, except for the legend, which is lacking to have an additional row with two columns showing the difference in shape, with 21 being "dog" and 23 being "others".

How could I fix the legend? Is there something missing there I am not adding?

Best regards.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蛮可爱 2025-01-22 22:46:31

我不太明白你的问题,但我尝试重命名形状。

示例代码:

library(plyr)
library(ggplot2)

     
#Table_UMAP = read.delim("/PATH/Table.txt", header=T, row.names=1)
Table_UMAP$colors <- factor(Table_UMAP$colors, levels=c("darkgrey", "forestgreen", "olivedrab4", "palegreen3", "darkseagreen", "red3", "hotpink3", "plum", "pink2",
                                                        "orange3", "sienna", "mediumpurple", "dodgerblue", "goldenrod2"))
Table_UMAP$tissue <- factor(Table_UMAP$tissue, levels=c("Brain", "Colon", "Duodenum", "Jejunum", "Ileum", "Plasma", "Heart", "Skeletal muscle", "Skin",
                                                        "Kidney", "Liver", "Lung", "Pancreas", "Testis"))
Table_UMAP$shape <- factor(Table_UMAP$shape, levels=c(21, 23))

Table_UMAP$shape <-revalue(Table_UMAP$shape, c("21"="Dog", "23"="Other"))

Table_UMAP <-Table_UMAP [-which(is.na(Table_UMAP$shape)),] # remove NA


ggplot(Table_UMAP, aes(x=UMAP1, y=UMAP2), color=colors, shape=shape) + 
  geom_point(aes(shape=shape, color=tissue), size=6) + 
  guides(shape= guide_legend(ncol=2)) +
  scale_color_manual(
    values = c("Brain" = "darkgrey",
               "Colon"="forestgreen", 
               "Duodenum"="olivedrab4", 
               "Jejunum"="palegreen3", 
               "Ileum"="darkseagreen",
               "Plasma"="red3", 
               "Heart"="hotpink3", 
               "Skeletal muscle"="plum", 
               "Skin"="pink2",
               "Kidney"="orange3",
               "Liver"="sienna", 
               "Lung"="mediumpurple", 
               "Pancreas"="dodgerblue", 
               "Testis"="goldenrod2"))+
  guides(color = guide_legend(ncol=2)) +
  
  ylim(c(-16,15)) + 
  xlim(c(-12,12)) +
  xlab("Component 1") + 
  ylab("Component 2") + 
  
  theme_bw() +
  theme(legend.position = c(0.00, 0.0),
        legend.justification=c(0,0),
        legend.title = element_blank(), 
        legend.text = element_text(size=10),
        legend.background = element_rect(fill = "white", color="black"))+
  theme(axis.text.x = element_text(size=8),
        axis.text.y = element_text(size=8),
        axis.title.x =element_text(size=12, margin = margin(t = 10)),
        axis.title.y =element_text(size=12, margin = margin(r = 10)),
        plot.margin = margin(1, 1, 1, 1, "cm"))

绘图:

在此处输入图像描述

I don't really understand your question but I tried to rename the shapes.

Sample code:

library(plyr)
library(ggplot2)

     
#Table_UMAP = read.delim("/PATH/Table.txt", header=T, row.names=1)
Table_UMAP$colors <- factor(Table_UMAP$colors, levels=c("darkgrey", "forestgreen", "olivedrab4", "palegreen3", "darkseagreen", "red3", "hotpink3", "plum", "pink2",
                                                        "orange3", "sienna", "mediumpurple", "dodgerblue", "goldenrod2"))
Table_UMAP$tissue <- factor(Table_UMAP$tissue, levels=c("Brain", "Colon", "Duodenum", "Jejunum", "Ileum", "Plasma", "Heart", "Skeletal muscle", "Skin",
                                                        "Kidney", "Liver", "Lung", "Pancreas", "Testis"))
Table_UMAP$shape <- factor(Table_UMAP$shape, levels=c(21, 23))

Table_UMAP$shape <-revalue(Table_UMAP$shape, c("21"="Dog", "23"="Other"))

Table_UMAP <-Table_UMAP [-which(is.na(Table_UMAP$shape)),] # remove NA


ggplot(Table_UMAP, aes(x=UMAP1, y=UMAP2), color=colors, shape=shape) + 
  geom_point(aes(shape=shape, color=tissue), size=6) + 
  guides(shape= guide_legend(ncol=2)) +
  scale_color_manual(
    values = c("Brain" = "darkgrey",
               "Colon"="forestgreen", 
               "Duodenum"="olivedrab4", 
               "Jejunum"="palegreen3", 
               "Ileum"="darkseagreen",
               "Plasma"="red3", 
               "Heart"="hotpink3", 
               "Skeletal muscle"="plum", 
               "Skin"="pink2",
               "Kidney"="orange3",
               "Liver"="sienna", 
               "Lung"="mediumpurple", 
               "Pancreas"="dodgerblue", 
               "Testis"="goldenrod2"))+
  guides(color = guide_legend(ncol=2)) +
  
  ylim(c(-16,15)) + 
  xlim(c(-12,12)) +
  xlab("Component 1") + 
  ylab("Component 2") + 
  
  theme_bw() +
  theme(legend.position = c(0.00, 0.0),
        legend.justification=c(0,0),
        legend.title = element_blank(), 
        legend.text = element_text(size=10),
        legend.background = element_rect(fill = "white", color="black"))+
  theme(axis.text.x = element_text(size=8),
        axis.text.y = element_text(size=8),
        axis.title.x =element_text(size=12, margin = margin(t = 10)),
        axis.title.y =element_text(size=12, margin = margin(r = 10)),
        plot.margin = margin(1, 1, 1, 1, "cm"))

Plot:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文