R语言 ggplot不会因因子而改变颜色

s8vozzvw  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(216)

我有一个问题发生在我的ggplot,我无法找到问题。我有一个数据框看起来有点如下,并希望绘制它的颜色编码制度:

df <- data.frame(
  CO = c(0, 4, 5, 23, 25, 28, 31, 2), 
  time = structure(c(1670585739, 1670586039, 1670586339, 1670586639, 1670586939, 1670587239, 1670587539, 1670587839), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
  regime = structure(c(2L, 2L, 2L, 1L, 1L, 1L, 1L, 3L), levels = c("LA", "PAn", "So"), class = "factor")
  )
df
#>   CO                time regime
#> 1  0 2022-12-09 11:35:39    PAn
#> 2  4 2022-12-09 11:40:39    PAn
#> 3  5 2022-12-09 11:45:39    PAn
#> 4 23 2022-12-09 11:50:39     LA
#> 5 25 2022-12-09 11:55:39     LA
#> 6 28 2022-12-09 12:00:39     LA
#> 7 31 2022-12-09 12:05:39     LA
#> 8  2 2022-12-09 12:10:39     So

数据如下所示:

> sapply(df,class)

$CO
[1] "integer"

$time
[1] "POSIXct" "POSIXt"

$regime
[1] "factor"

> summary(df)

      CO             time                        regime   
Min.   :  0.0   Min.   :2022-12-09 11:35:39.00   LA : 431
1st Qu.:124.0   1st Qu.:2022-12-10 17:59:09.00   PAn:2384
Median :142.0   Median :2022-12-11 23:41:39.00   SoL:  37
Mean   :134.5   Mean   :2022-12-11 23:31:39.06
3rd Qu.:149.0   3rd Qu.:2022-12-13 05:24:09.00
Max.   :176.0   3rd Qu.:2022-12-13 05:24:09.00
                Max.   :2022-12-14 11:04:09.00

然而,使用ggplot时,由于以下情况,未显示颜色:

ggplot(df, aes(x=time, y=CO, color = factor(regime))) +
  geom_point() +
  theme(legend.position = "bottom")

给了我

我在这里迷路了,因为“政权”的因子在底部以不同的颜色显示,但在图本身中没有颜色编码,尽管事实上类是正确的“因子”,也没有任何错误消息。
我已经尝试在人工数据集中重现这个问题,但无法重现,使用+ geom_point(color=factor(regime)也没有解决这个问题。

58wvjzkj

58wvjzkj1#

试试这个:

ggplot(df, aes(x=time, y=CO, color = regime,size=regime)) +
  geom_point(alpha=.5) +
  theme(legend.position = "bottom") + 
  scale_size_manual(values=c("LA"=5,"PAn"=1,"So"=5))

根据需要修改这些值
警告;对于你的第三个政权是So还是SoL要保持一致,就像你向我们展示的那样...

相关问题