gpt4 book ai didi

r - 更改 ggplot 中某些类别的线型?

转载 作者:行者123 更新时间:2023-12-05 02:04:44 24 4
gpt4 key购买 nike

我有一些数据。

library(reshape2)
library(ggplot2)
df = data.frame(cat = LETTERS[1:6], VAR1 = runif(6), VAR2 = runif(6), VAR3 = runif(6), VAR4 = runif(6))
df_melted = melt(df, id.vars = 'cat')
ggplot(df_melted, aes(x = variable, y = value)) + geom_line(aes(color = cat, group = cat))

我需要在最后绘制 A 和 B(因此它们位于其他线条之上)并且线条类型为实线。其他“猫”的线型应该加点。

最佳答案

这可以通过以下方式实现:

  1. 按猫降序排列你的 df,使 A 和 B 排在最后
  2. 在线型上映射条件 cat %in% c("A", "B")
  3. 使用 scale_linetype_manual 设置 TRUE 和 FALSE 的线型
  4. 使用guides去除线型图例
library(reshape2)
library(ggplot2)
df = data.frame(cat = LETTERS[1:6], VAR1 = runif(6), VAR2 = runif(6), VAR3 = runif(6), VAR4 = runif(6))
df_melted = melt(df, id.vars = 'cat')
df_melted <- arrange(df_melted, desc(cat))
#> Error in arrange(df_melted, desc(cat)): could not find function "arrange"
ggplot(df_melted, aes(x = variable, y = value)) +
geom_line(aes(color = cat, group = cat, linetype = cat %in% c("A", "B"))) +
scale_linetype_manual(values = c("TRUE" = "solid", "FALSE" = "dotted")) +
guides(linetype = FALSE)

编辑 实现结果的另一种方法可能看起来像这样。在这里我也使用相同的图案来调整大小。我喜欢这种方法的一点是我们不需要条件而且我们只有一个图例:

library(reshape2)
library(ggplot2)
library(dplyr)

df = data.frame(cat = LETTERS[1:6], VAR1 = runif(6), VAR2 = runif(6), VAR3 = runif(6), VAR4 = runif(6))
df_melted = melt(df, id.vars = 'cat')
df_melted <- arrange(df_melted, desc(cat))
ggplot(df_melted, aes(x = variable, y = value, group = cat)) +
geom_line(aes(color = cat, linetype = cat, size = cat)) +
scale_linetype_manual(values = c(A = "solid", B = "solid", rep("dotted", 4))) +
scale_size_manual(values = c(A = 1, B = 1, rep(.5, 4)))

关于r - 更改 ggplot 中某些类别的线型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64184348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com