ggplot2 和 R - 将自定义颜色应用于长格式的多组直方图
ggplot2 and R - Applying custom colors to a multi group histogram in long format
我制作了一个直方图,显示了我完成的三个激光雷达扫描的每个海拔高度的激光雷达 returns 分布。
我已经将我的数据转换为长格式,使用:
- 一列名为 'value',描述每个点的 z 位置
- 一个名为 'variable' 的列,其中包含每个
扫描组
在附图中你可以看到我的三个扫描组的直方图。我目前正在使用 viridis 按扫描组(即变量列中的扫描名称)为直方图着色。但是,我想将图表中的颜色与我已有的颜色相匹配。
我该怎么做?
我想要为我的三个直方图着色的十六进制是:
lightgreen = "#62FE96"
lightred = "#FE206B"
darkpurple = "#62278E"
A link to my data - 'density2'
我当前的代码:
library(tidyverse)
library(viridisLite)
library(viridis)
# histogram
p <- density2 %>%
ggplot( aes(x=value,color = variable, show.legend = FALSE)) +
geom_histogram(binwidth = 1, alpha = 0.5, position="identity") +
scale_color_viridis(discrete =TRUE) +
scale_fill_viridis(discrete=TRUE) +
theme_bw() +
labs(fill="") +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
p + scale_y_sqrt() + theme(legend.position="none") + labs(y = "data pts", x = "elevation (m)")
如有任何帮助,我们将不胜感激!
删除 scale_color_viridis
和 scale_fill_viridis
行 - 这些正在应用 Viridis 色标。替换为 scale_fill_manual(values = c(lightgreen, lightred, darkpurple))
。在您的审美映射中,将 color = variable
替换为 fill = variable
。对于直方图,color
指的是每个条形轮廓线的颜色,fill
指的是每个条形填充的颜色。
这应该给您留下:
p <- density2 %>%
ggplot(aes(x = value, fill = variable)) +
geom_histogram(binwidth = 1, alpha = 0.5, position = "identity") +
scale_fill_manual(values = c(lightgreen, lightred, darkpurple)) +
theme_bw() +
labs(fill = "") +
theme(panel.grid = element_blank())
p + scale_y_sqrt() +
theme(legend.position = "none") +
labs(y = "data pts", x = "elevation (m)")
我还做了一些其他的清理工作。 show.legend = FALSE
不属于 aes()
- 你的 theme(legend.position = "none")
应该处理它。
我没有下载你的数据,把它保存在我的工作目录中,导入到R中,并在上面测试这段代码。如果您需要更多帮助,请以 copy/pasteable 格式 post 一小部分数据(例如,dput(density2[1:20, ])
用于前 20 行---选择一个合适的子集),我'我们很乐意测试和调整。
我制作了一个直方图,显示了我完成的三个激光雷达扫描的每个海拔高度的激光雷达 returns 分布。
我已经将我的数据转换为长格式,使用:
- 一列名为 'value',描述每个点的 z 位置
- 一个名为 'variable' 的列,其中包含每个 扫描组
在附图中你可以看到我的三个扫描组的直方图。我目前正在使用 viridis 按扫描组(即变量列中的扫描名称)为直方图着色。但是,我想将图表中的颜色与我已有的颜色相匹配。
我该怎么做?
我想要为我的三个直方图着色的十六进制是:
lightgreen = "#62FE96"
lightred = "#FE206B"
darkpurple = "#62278E"
A link to my data - 'density2'
我当前的代码:
library(tidyverse)
library(viridisLite)
library(viridis)
# histogram
p <- density2 %>%
ggplot( aes(x=value,color = variable, show.legend = FALSE)) +
geom_histogram(binwidth = 1, alpha = 0.5, position="identity") +
scale_color_viridis(discrete =TRUE) +
scale_fill_viridis(discrete=TRUE) +
theme_bw() +
labs(fill="") +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
p + scale_y_sqrt() + theme(legend.position="none") + labs(y = "data pts", x = "elevation (m)")
如有任何帮助,我们将不胜感激!
删除 scale_color_viridis
和 scale_fill_viridis
行 - 这些正在应用 Viridis 色标。替换为 scale_fill_manual(values = c(lightgreen, lightred, darkpurple))
。在您的审美映射中,将 color = variable
替换为 fill = variable
。对于直方图,color
指的是每个条形轮廓线的颜色,fill
指的是每个条形填充的颜色。
这应该给您留下:
p <- density2 %>%
ggplot(aes(x = value, fill = variable)) +
geom_histogram(binwidth = 1, alpha = 0.5, position = "identity") +
scale_fill_manual(values = c(lightgreen, lightred, darkpurple)) +
theme_bw() +
labs(fill = "") +
theme(panel.grid = element_blank())
p + scale_y_sqrt() +
theme(legend.position = "none") +
labs(y = "data pts", x = "elevation (m)")
我还做了一些其他的清理工作。 show.legend = FALSE
不属于 aes()
- 你的 theme(legend.position = "none")
应该处理它。
我没有下载你的数据,把它保存在我的工作目录中,导入到R中,并在上面测试这段代码。如果您需要更多帮助,请以 copy/pasteable 格式 post 一小部分数据(例如,dput(density2[1:20, ])
用于前 20 行---选择一个合适的子集),我'我们很乐意测试和调整。