使用R中的abline函数绘制不同颜色的直方图
Histogram with different colours using the abline function in R
我想绘制一个具有不同颜色和图例的直方图。
假设数据如下:
df1<- rnorm(300,60,5)
我使用以下代码使用 abline 函数获取直方图和线条:
df1<-data.frame(df1)
attach(df1)
hist(M,at=seq(0,100, 2))
abline(v=80, col="blue")
abline(v=77, col="red")
abline(v=71, col="red")
abline(v=68, col="blue")
abline(v=63, col="blue")
abline(v=58, col="blue")
abline(v=54, col="blue")
abline(v=51, col="blue")
abline(v=457, col="blue")
现在我想得到下面的情节。我想删除线,但我做不到。所以我不需要台词。
这是使用 ggplot2
、dplyr
和 tidyr
的一种方法。
首先您需要设置颜色。我用 mutate
和 case_when
来做到这一点。对于绘图本身,请务必记住,如果直方图 bin 未对齐,您可能会在同一条柱上获得不同的颜色。为避免这种情况,您可以使用 binwidth=1
.
library(ggplot2)
library(dplyr)
library(tidyr)
df1 <- data.frame(data1=rnorm(300,60,5))
df1 <- df1 %>%
mutate(color_name=case_when(data1<60 ~ "red",
data1>=60 & data1 <63 ~ "blue",
TRUE ~ "cyan"))
ggplot(df1,aes(x=data1, fill=color_name)) +
geom_histogram(binwidth = 1, boundary = 0, position="dodge") +
scale_fill_identity(guide = "legend")
在评论中追加要求
使用 case_when
四种颜色:
df1 <- data.frame(data1=rnorm(300,60,5))
df1 <- df1 %>%
mutate(color_name=case_when(data1<60 ~ "red",
data1>=60 & data1 <63 ~ "blue",
data1>=63 & data1 <65 ~ "orange",
TRUE ~ "cyan"))
ggplot(df1,aes(x=data1, fill=color_name)) +
geom_histogram(binwidth = 1, boundary = 0, position="dodge") +
scale_fill_identity(guide = "legend")
我想绘制一个具有不同颜色和图例的直方图。
假设数据如下:
df1<- rnorm(300,60,5)
我使用以下代码使用 abline 函数获取直方图和线条:
df1<-data.frame(df1)
attach(df1)
hist(M,at=seq(0,100, 2))
abline(v=80, col="blue")
abline(v=77, col="red")
abline(v=71, col="red")
abline(v=68, col="blue")
abline(v=63, col="blue")
abline(v=58, col="blue")
abline(v=54, col="blue")
abline(v=51, col="blue")
abline(v=457, col="blue")
现在我想得到下面的情节。我想删除线,但我做不到。所以我不需要台词。
这是使用 ggplot2
、dplyr
和 tidyr
的一种方法。
首先您需要设置颜色。我用 mutate
和 case_when
来做到这一点。对于绘图本身,请务必记住,如果直方图 bin 未对齐,您可能会在同一条柱上获得不同的颜色。为避免这种情况,您可以使用 binwidth=1
.
library(ggplot2)
library(dplyr)
library(tidyr)
df1 <- data.frame(data1=rnorm(300,60,5))
df1 <- df1 %>%
mutate(color_name=case_when(data1<60 ~ "red",
data1>=60 & data1 <63 ~ "blue",
TRUE ~ "cyan"))
ggplot(df1,aes(x=data1, fill=color_name)) +
geom_histogram(binwidth = 1, boundary = 0, position="dodge") +
scale_fill_identity(guide = "legend")
在评论中追加要求
使用 case_when
四种颜色:
df1 <- data.frame(data1=rnorm(300,60,5))
df1 <- df1 %>%
mutate(color_name=case_when(data1<60 ~ "red",
data1>=60 & data1 <63 ~ "blue",
data1>=63 & data1 <65 ~ "orange",
TRUE ~ "cyan"))
ggplot(df1,aes(x=data1, fill=color_name)) +
geom_histogram(binwidth = 1, boundary = 0, position="dodge") +
scale_fill_identity(guide = "legend")