两种颜色重叠时的r ggplot

时间:2020-06-08 19:43:08

标签: r ggplot2

我有一些代码可以生成图形,唯一的问题是有很多重叠的颜色。

当两种颜色重叠时,如何指定主色? 例如,当指标=阈值时有4个黑点。它们分别在4个x轴上。但是,“ Wire”和“ ACH”标尺上的黑点没有显示,因为它与蓝点重叠。 “ RDFI”标度上的黑点几乎没有出现。当两种颜色重叠时,如何使黑色成为主要颜色?谢谢你!

>>id=1, iccId=xxxxxxx simSlotIndex=-1 carrierId=529 displayName=Claro BR carrierName=Claro
>>id=2, iccId=yyyyyyyyy simSlotIndex=-1 carrierId=530 displayName=Vivo carrierName=Vivo nameSource=1

enter image description here

3 个答案:

答案 0 :(得分:0)

要指定主色,应使用函数new_scale()及其别名new_scale_color()和new_scale_fill()。

作为示例,让我们使用宽大的volcano

在地形轮廓图上叠加一些测量值
library(ggplot2)
library(ggnewscale)
# Equivalent to melt(volcano)
topography <- expand.grid(x = 1:nrow(volcano),
                          y = 1:ncol(volcano))
topography$z <- c(volcano)

# point measurements of something at a few locations
set.seed(42)
measurements <- data.frame(x = runif(30, 1, 80),
                           y = runif(30, 1, 60),
                           thing = rnorm(30))

要点:


ggplot(mapping = aes(x, y)) +
  geom_contour(data = topography, aes(z = z, color = stat(level))) +
  # Color scale for topography
  scale_color_viridis_c(option = "D") +
  # geoms below will use another color scale
  new_scale_color() +
  geom_point(data = measurements, size = 3, aes(color = thing)) +
  # Color scale applied to geoms added after new_scale_color()
  scale_color_viridis_c(option = "A")

主要轮廓:

ggplot(mapping = aes(x, y)) +
  geom_point(data = measurements, size = 3, aes(color = thing)) +
  scale_color_viridis_c(option = "A")+
  new_scale_color() +
  geom_contour(data = topography, aes(z = z, color = stat(level))) +
  scale_color_viridis_c(option = "D") 

答案 1 :(得分:0)

您的问题可能不在于什么颜色占主导。您选择了经常显示的颜色。您可能会丢失Y轴的底部。您的示例中的代码可能无法生成该图,该图有错误。

这是一个简单的示例,它显示了在绘制蜜蜂群之后简单地过度绘制阈值点来解决问题的一种方法。

library(dplyr)
library(ggbeeswarm)

distro <- data.frame(
'variable'=rep(c('runif','rnorm'),each=1000),
'value'=c(runif(2000, min=-3, max=3))
)

distro$indicator <- "NA"
distro[3,3] <- "Threshhold"
distro[163,3] <- "Threshhold"



ggplot2::ggplot(distro,aes(variable, value, color=indicator)) + 
  geom_quasirandom(groupOnX=TRUE, na.rm = TRUE, width=0.1) +
  scale_color_manual(name = 'indicator', values=c("#99ccff","#000000")) +
  geom_point(data = distro %>% filter(indicator == "Threshhold"))

答案 2 :(得分:0)

您根据颜色变量(指示器)对数据进行排序。

基本上,您希望将黑点绘制在其他点的最后=。

df$indicator <- sort(df$indicator, decreasing=T)

#Tidyverse solution

df <- df %>% arrange(desc(indicator))

根据您的水平,您可能需要不进行反向排序。

然后您只需绘图即可。

pd <- tibble(x=rnorm(1000), y=1, indicator=sample(c("A","B"), replace=T, size = 1000))
ggplot(pd, aes(x=x,y=y,color=indicator)) + geom_point()

pd <- pd %>% arrange(indicator)
ggplot(pd, aes(x=x,y=y,color=indicator)) + geom_point()

pd <- pd %>% arrange(desc(indicator))
ggplot(pd, aes(x=x,y=y,color=indicator)) + geom_point()