如何在r中创建不同颜色的直方图


通常,您可能想在 R 中创建具有多种不同颜色的直方图。

以下示例展示了如何在基本 R 和ggplot2中执行此操作。

示例1:R基数不同颜色的直方图

以下代码展示了如何在基本 R 中创建具有单一颜色的直方图:

 #create data frame
df <- data. frame (x=c(12, 14, 14, 15, 15, 17, 19, 22, 23, 23, 24))

#create histogram
hist(df$x)

默认情况下,直方图中的所有条形颜色都相同。

但是,我们可以使用以下代码创建具有三种不同颜色的直方图:

 #create data frame
df <- data. frame (x=c(12, 14, 14, 15, 15, 17, 19, 22, 23, 23, 24))

#define histogram break points
hist_breaks <- hist(df$x)$breaks

#define colors to use in histogram based on break points
color_list <- rep(' red ', length(hist_breaks))
color_list[hist_breaks < 20 ] <- ' blue '
color_list[hist_breaks < 16 ] <- ' purple '

#create histogram with custom colors
hist(df$x, col=color_list)

R中不同颜色的直方图

以下是创建三种颜色的逻辑:

  • 首先,我们指定每个条形都是红色的
  • 然后我们将断点小于 20 的每个条形图更改为蓝色
  • 然后我们将断点小于 16 的每个条形更改为紫色

最终结果是三色直方图。

示例2:ggplot2中不同颜色的直方图

假设我们在 R 中有以下数据框:

 #create data frame
df <- data. frame (x=c(12, 14, 14, 15, 15, 17, 19, 22, 23, 23, 24))

#view data frame
df

    x
1 12
2 14
3 14
4 15
5 15
6 17
7 19
8 22
9 23
10 23
11 24

要为此数据框创建不同颜色的直方图,我们首先需要使用嵌套的 if else 语句为值创建分组变量:

 #create grouping variable
df$group = ifelse(df$x < 16 , ' C ', ifelse(df$x < 20 , ' B ', ' A '))

#view updated data frame
df

    x group
1 12 C
2 14C
3 14C
4 15C
5 15C
6 17 B
7 19 B
8 22 A
9 23 A
10 23 A
11 24 A

我们现在可以在 ggplot2 中创建直方图,并使用组变量设置图中的颜色:

 #create histogram with custom colors
ggplot(df, aes(x, fill=group)) +
  geom_histogram(bins= 6 , color=' black ') +
   scale_fill_manual(values = c(' A ' = ' red ',
                                ' B ' = ' blue ',
                                ' C ' = ' purple '))

最终结果是三色直方图。

注意:您可以 在此处找到scale_fill_manual()的完整文档。

其他资源

以下教程解释了如何在 R 中执行其他常见操作:

如何在 R 中创建相对频率直方图
如何在R中的直方图上叠加正态曲线
如何在 R 中指定直方图中断

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注