我有如下所示的数据,我想使用ggplot绘制:
>c 状态C1 C2 1个变量1-5.3458708 2.4959909437 2变量2-5.1344963 2.4385834964 3个变量3-5.0972730 2.8425796581 4变量4 0.3743154-0.2244166193 5变量5 0.4102937-0.6597997849 6变量6 0.2252697-0.2681201215 7变量7-2.1813244 0.8744499423 8变8-2.1879480 0.9329252014 9变9-2.4635253 1.0975828789 10变10-3.1579603 1.3480216825 11 var11-3.3255364 1.4333042550 12变12-3.0378333 1.2389625856 13变量13 4.4218140-0.0897113458 14变14 5.1222106 0.8949353025 15变15 5.6032688 0.4346656081 16 var16 3.5892269-0.1845360437 17变量17 3.9025834 0.0008319954 18变18 3.6995580 0.1258706884 19变19 0.4185548 0.5899289156 20变20 0.4571535 0.1595539675 21变21 0.6146784-0.0438042841 22 var22 8.5871265 2.6205985329 23变23 9.3172001 3.0164859344 24 var24 9.1885141 2.9251166107 < /代码> 我想以这样的方式绘制数据:如果c1的值大于c2,则绘图上的数据点显示绿色;如果c2的值大于c1,则绘图上的数据点显示红色。实现这一目标的代码如下: p<-ggplot(c,aes(c1,c2,label=state))。+ 模型:几何参考线(H=0)+ 模型:几何参考线(V=0)+ 几何点(aes(颜色=ifelse(c(abs(c$c1))>c(abs(c$c2)),“绿色”,“红色”))+ 参考线(填充=参考线图例(反向=真))。+ XLAB(“第一主成分”)。+ 依拉布(“第二主成分”)。+ ggtitle(“我的数据的前两个主要组成部分”) p2<-p+geom_文本排斥(segment.color=na) < /代码> 但是ifelse()条件的工作方式与之相反,如下图所示,在c1的值大于c2的情况下,它会给出红色,反之亦然,从图例中也可以看出这一点: 此外,我还想将图例标题更改为“Suposed Title”,并将C1中的数据点标记为“Column1”,将C2中的数据点标记为“Column2”。这怎么可能? 我第一次在aes()中尝试ifelse(),它已经在空间生态和r中使用了。 其次,此文章与链接的文章有所不同here=>a>对于可能的重复,因为该问题应用于时间序列数据,绘图不同,并且给出了许多颜色。我还可以在这里找到第三列颜色,如所示的颜色。 我想以这样的方式绘制数据:如果c1的值大于c2,则绘图上的数据点显示绿色;如果c2的值大于c1,则绘图上的数据点显示红色。实现这一点的代码如下: p <- ggplot(C, aes(C1, C2,label = State)) + modelr::geom_ref_line(h = 0) + modelr::geom_ref_line(v = 0) + geom_point(aes(color= ifelse(c(abs(C$C1)) > c(abs(C$C2)), "green", "red"))) + guides(fill = guide_legend(reverse=TRUE)) + xlab("First Principal Component") + ylab("Second Principal Component") + ggtitle("First Two Principal Components of my data") p2 <- p + geom_text_repel(segment.color = NA) 但是ifelse()条件的工作方式与之相反,即它提供红色,其中c1的值大于c2,反之亦然,如下图所示,也可以从图例中看到: 此外,我还想将图例标题更改为“Suposed Title”,并将C1中的数据点标记为“Column1”,将C2中的数据点标记为“Column2”。这怎么可能? 我第一次在aes()中尝试ifelse()是在spatial ecology and R还有这个stackoverflow question. 第二,这篇文章与链接的不同here由于该问题适用于时间序列数据,因此对于可能的重复,绘图是不同的,并且给出了许多颜色。我也可以提出第三列的颜色,如所示here但我想有一个有效的解决方案。
我想以这样的方式绘制数据:如果c1的值大于c2,则绘图上的数据点显示绿色;如果c2的值大于c1,则绘图上的数据点显示红色。实现这一目标的代码如下:
p<-ggplot(c,aes(c1,c2,label=state))。+ 模型:几何参考线(H=0)+ 模型:几何参考线(V=0)+ 几何点(aes(颜色=ifelse(c(abs(c$c1))>c(abs(c$c2)),“绿色”,“红色”))+ 参考线(填充=参考线图例(反向=真))。+ XLAB(“第一主成分”)。+ 依拉布(“第二主成分”)。+ ggtitle(“我的数据的前两个主要组成部分”) p2<-p+geom_文本排斥(segment.color=na) < /代码> 但是ifelse()条件的工作方式与之相反,如下图所示,在c1的值大于c2的情况下,它会给出红色,反之亦然,从图例中也可以看出这一点: 此外,我还想将图例标题更改为“Suposed Title”,并将C1中的数据点标记为“Column1”,将C2中的数据点标记为“Column2”。这怎么可能? 我第一次在aes()中尝试ifelse(),它已经在空间生态和r中使用了。 其次,此文章与链接的文章有所不同here=>a>对于可能的重复,因为该问题应用于时间序列数据,绘图不同,并且给出了许多颜色。我还可以在这里找到第三列颜色,如所示的颜色。
p<-ggplot(c,aes(c1,c2,label=state))。+ 模型:几何参考线(H=0)+ 模型:几何参考线(V=0)+ 几何点(aes(颜色=ifelse(c(abs(c$c1))>c(abs(c$c2)),“绿色”,“红色”))+ 参考线(填充=参考线图例(反向=真))。+ XLAB(“第一主成分”)。+ 依拉布(“第二主成分”)。+ ggtitle(“我的数据的前两个主要组成部分”) p2<-p+geom_文本排斥(segment.color=na) < /代码> 但是ifelse()条件的工作方式与之相反,如下图所示,在c1的值大于c2的情况下,它会给出红色,反之亦然,从图例中也可以看出这一点: 此外,我还想将图例标题更改为“Suposed Title”,并将C1中的数据点标记为“Column1”,将C2中的数据点标记为“Column2”。这怎么可能? 我第一次在aes()中尝试ifelse(),它已经在空间生态和r中使用了。
但是ifelse()条件的工作方式与之相反,如下图所示,在c1的值大于c2的情况下,它会给出红色,反之亦然,从图例中也可以看出这一点:
此外,我还想将图例标题更改为“Suposed Title”,并将C1中的数据点标记为“Column1”,将C2中的数据点标记为“Column2”。这怎么可能?
我第一次在aes()中尝试ifelse(),它已经在空间生态和r中使用了。
其次,此文章与链接的文章有所不同here=>a>对于可能的重复,因为该问题应用于时间序列数据,绘图不同,并且给出了许多颜色。我还可以在这里找到第三列颜色,如所示的颜色。
我想以这样的方式绘制数据:如果c1的值大于c2,则绘图上的数据点显示绿色;如果c2的值大于c1,则绘图上的数据点显示红色。实现这一点的代码如下:
p <- ggplot(C, aes(C1, C2,label = State)) + modelr::geom_ref_line(h = 0) + modelr::geom_ref_line(v = 0) + geom_point(aes(color= ifelse(c(abs(C$C1)) > c(abs(C$C2)), "green", "red"))) + guides(fill = guide_legend(reverse=TRUE)) + xlab("First Principal Component") + ylab("Second Principal Component") + ggtitle("First Two Principal Components of my data") p2 <- p + geom_text_repel(segment.color = NA)
但是ifelse()条件的工作方式与之相反,即它提供红色,其中c1的值大于c2,反之亦然,如下图所示,也可以从图例中看到:
我第一次在aes()中尝试ifelse()是在spatial ecology and R还有这个stackoverflow question.
第二,这篇文章与链接的不同here由于该问题适用于时间序列数据,因此对于可能的重复,绘图是不同的,并且给出了许多颜色。我也可以提出第三列的颜色,如所示here但我想有一个有效的解决方案。
也许你可以尝试这样的方法:
library(tidyverse) C %>% mutate(color = if_else(abs(C1) > abs(C2), "Condition 1", "Condition 2")) %>% ggplot(aes(x = C1, y = C2, label = State, color = color)) + geom_point() + scale_color_manual( values = c("Condition 1" = "green", "Condition 2" = "red"), name = "New title" ) + ggrepel::geom_text_repel(color = "black")
if-else操作是一个矢量化的命令,它根据上面概述的条件创建一个新变量。在绘图操作之前运行它,可以更容易地可视化正在发生的事情。