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

8

我有一个包含约500个整数值的csv文件数据集,每个值都在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)))

下面展示了一个test2.csv的简单样例(非常简单)。
69,
68,
67,
65,
65,
62,
59,
59,
54,

现在我的图表是:

我的图表

为了满足之前解释的颜色指南,我需要做什么?

注意: 我之前发布过这个问题,但没有包含我的代码或数据集的参考。


1
你可以查看r-cookbook - krishna Prasad
2个回答

12

您需要按照以下方式在 hist 方法中添加 col 参数:

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

执行上述操作后,您将会看到以下图片:

enter image description here

现在,您可以根据自己的需求替换颜色值(无论是名称还是十六进制值,如“#FFFF00”)。


6
在你之前的问题中,你提到了ggplot2,所以这里提供一个ggplot2的解决方案:
首先模拟你的数据集:
set.seed(123)
df <- data.frame(X = sample(50:89, 500, replace = T))

添加一个新变量来定义您的颜色标准:
df$group = ifelse(df$X < 66, "50-65", ifelse(df$X < 75, "66-74", "75-89"))

现在,加载ggplot2库以创建直方图。
library(ggplot2)

ggplot(df, aes(X, fill = group)) + geom_histogram()

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

现在图像的样子如下:

enter image description here

尽管您包含了xlim = c(0,99)(在附加的图中不可见),但我不知道为什么您要使用它。如果您希望,可以使用+ xlim(0,99)添加xlim参数。
要了解更多关于ggplot2的信息,请查看这里注意:您可以在geom_histogram中定义条形数量或条形宽度。请参考此处了解更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接