【问题标题】:Histogram with different colours using the abline function in R使用 R 中的 abline 函数具有不同颜色的直方图
【发布时间】:2020-08-30 04:41:52
【问题描述】:

我想用不同的颜色和图例绘制直方图。

假设以下数据:

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")

现在我想得到以下情节。我想删除这些线条,但我无法做到。所以我不需要有线条。

【问题讨论】:

  • 需要澄清的几点: 1) 对象d1 分配在哪里,或者是错字? df1&lt;- rnorm(300,60,5) 应该是 d1 吗? 2)大概你想删除垂直线?为什么不直接从您的代码中删除对abline 的调用? 3)你的问题是指“不同的颜色和图例”你能具体说明你的期望吗? 4) 您能否将对象M 包含为数据框,以使您的问题可重现? 5) 对hist 的调用中at 的参数是什么
  • 谢谢彼得-我已经编辑它是错字。您可以生成自己的数据。我希望得到或多或少相同的情节。 at 的参数是让 x 轴相差 2 或更多..
  • 我没有删除 abline,因为值 v 可能会改变,我只想在两行之间为它们着色

标签: r ggplot2 histogram


【解决方案1】:

这是使用ggplot2dplyrtidyr 的一种方法。

首先您需要设置颜色。我用mutatecase_when 做到这一点。对于绘图本身,重要的是要记住,如果直方图箱未对齐,您可以在同一条柱上获得不同的颜色。为避免这种情况,您可以使用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")

【讨论】:

  • @user1946911 我编辑了我的代码。少了一行。 ggplot2 的工作方式,你需要列名。所以我把你的数据放在data.frame
  • 更改case_when
  • @user1946911 我添加了一个有四种颜色的示例
猜你喜欢
  • 1970-01-01
  • 2016-12-13
  • 2019-07-30
  • 2021-11-04
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多