如何在R中绘制具有不同颜色的直方图

Nis*_*uza 4 visualization r data-visualization

我在csv文件中有一个大约500个整数值的数据集,每个值在50-89之间.我试图在R中创建一个直方图,其中代表值50-65的条形是青铜色,66-74银和75-89金.我到目前为止的脚本如下:

dat1 <- read.csv("test2.csv", header=F)$V1
hist(dat1, main="Distribution of Player Ratings", xlim = c(0,99), breaks=c(seq(40,99,5)))
Run Code Online (Sandbox Code Playgroud)

test2.csv的示例如下所示(非常简单)

69,
68,
67,
65,
65,
62,
59,
59,
54,
Run Code Online (Sandbox Code Playgroud)

现在我的图表是(对不起,我是新的,所以我没有10个代表点) -

我的图表

为了达到前面解释的颜色指南,我需要做些什么?

注意 - 我之前发布过这个问题,但没有任何代码或我的数据集的引用.

kri*_*sad 7

您需要colhist方法中添加参数,如下所示:

t<- c(69,68,67,65,65,62,59,59,54)
hist(t, main="Distribution of Player Ratings",xlim = c(0,99), 
       breaks=c(seq(40,99,5)), col = c("blue", "red", "gray", "green"))
Run Code Online (Sandbox Code Playgroud)

看到上面执行后得到的图像:

在此输入图像描述

现在您可以根据您的要求替换颜色值(名称或十六进制值,如"#FFFF00").


Sum*_*edh 5

在您之前的问题中,您已经提到了ggplot2,所以这是一个ggplot2解决方案:

首先模拟您的数据集:

set.seed(123)
df <- data.frame(X = sample(50:89, 500, replace = T))
Run Code Online (Sandbox Code Playgroud)

添加一个定义颜色标准的新变量:

df$group = ifelse(df$X < 66, "50-65", ifelse(df$X < 75, "66-74", "75-89"))
Run Code Online (Sandbox Code Playgroud)

现在,加载ggplot2库以创建直方图

library(ggplot2)

ggplot(df, aes(X, fill = group)) + geom_histogram()
Run Code Online (Sandbox Code Playgroud)

要提供自定义颜色,请使用scale_fill_manual

ggplot(df, aes(X, fill = group)) + geom_histogram() +
    scale_fill_manual(values = c("50-65" = "#CD7F32",
                                 "66-74" = "#C0C0C0",
                                 "75-89" = "gold"))
Run Code Online (Sandbox Code Playgroud)

这就是图现在的样子:

在此处输入图片说明

尽管您包含了xlim = c(0,99)(在附图中不可见),但我不知道您为什么要使用它。如果您愿意,可以xlim使用+ xlim(0,99).

要了解更多信息ggplot2,请看这里

注意:您可以在geom_histogram. 参考这个了解更多