R中的部分颜色直方图
Posted
技术标签:
【中文标题】R中的部分颜色直方图【英文标题】:Partially color histogram in R 【发布时间】:2014-03-18 11:30:17 【问题描述】:我有一个如图所示的直方图。我希望两个区域中的条分别为红色和绿色,即从 0 到左侧第一个黑色边框的条应为红色,第二个区域中的条应为绿色。 这可以在R中完成吗? 用于获取直方图的代码是
hist(pr4$x[pr4$x[,1]>-2,1],breaks=100)
【问题讨论】:
【参考方案1】:最好的方法是让hist
为您进行计算,然后使用hist
(再次)进行实际绘图。这是一个例子:
set.seed(1)
x <- rnorm(1000)
h <- hist(rnorm(1000), breaks=50, plot=FALSE)
cuts <- cut(h$breaks, c(-Inf,-.5,1.75,Inf))
plot(h, col=cuts)
最后一行中的 .5 和 1.75 是您希望具有不同颜色的阈值。
注意:我最初的答案使用了barplot
,但这种策略使得轴有点难以使用。
结果如下:
【讨论】:
您可以只在直方图对象上调用plot
,而不是在数据上再次调用hist
。
@Spacedman 哦,天哪,这只是一个错字。我更新了图片,然后在这里更新代码。
我相信这个答案并不完全准确 - 我认为条形图的颜色偏移了 1 - 我将发布一个详细的答案。【参考方案2】:
这是我在cmets中提到的方法:
制作一些测试数据(你应该在你的问题中这样做!)
test = runif(10000,-2,0)
让 R 计算直方图但不绘制它:
h = hist(test, breaks=100,plot=FALSE)
您的直方图分为三个部分:
ccat = cut(h$breaks, c(-Inf, -0.6, -0.4, Inf))
使用此调色板绘图,将因子隐式转换为数字索引调色板:
plot(h, col=c("white","green","red")[ccat])
ggplot2
解决方案也可用。
【讨论】:
@Spacedman你可以在这里帮忙***.com/questions/61783942/…【参考方案3】:试试这个:
hist(pr4$x[pr4$x[,1]>-2,1],breaks=100, col = c(rep("white", 69), rep("green", 15), rep("red", 16)))
您可能需要根据直方图中的中断数调整每种颜色的重复次数。
【讨论】:
或者使用 plot=FALSE 调用 hist,然后从返回的中断中计算颜色。然后使用 col 参数进行绘图。【参考方案4】:我多年来一直在使用 @Thomas 的解决方案,但后来发现它并不精确。
在下面的示例中,我遵循已接受的答案。
fake_data <- c(0.35, 0.41, 0.41, 0.49, 0.49, 0.49, 0.51, 0.51, 0.59, 0.64, 0.7)
fake_hist <- hist(fake_data, plot = F)
fake_cuts <- cut(fake_hist$breaks, c(-Inf, 0.5, Inf))
plot(fake_hist, col = fake_cuts)
切割的目的是 0.5,但第三条是黑色的,虽然它应该是红色的。原因是,中断包含所有边界,包括第一个柱的左边界,这意味着有 n+1 个值,其中 n 是直方图中的柱数。对于 n 个条形的着色,只需要正确的边界,因此我们必须排除第一个值。
fake_data <- c(0.35, 0.41, 0.41, 0.49, 0.49, 0.49, 0.51, 0.51, 0.59, 0.64, 0.7)
fake_hist <- hist(fake_data, plot = F)
fake_cuts <- cut(fake_hist$breaks[-1], c(-Inf, 0.5, Inf))
plot(fake_hist, col = fake_cuts)
在预期的地方产生颜色分割。
我在这里发布它是因为我花了很长时间才发现有问题。
【讨论】:
以上是关于R中的部分颜色直方图的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用ggplot2包的快速可视化函数qplot绘制分组直方图(分组颜色设置)实战
R ggplot 直方图。如何根据另一个变量更改条形的颜色?
R语言plotly可视化:plotly可视化基础二维直方图自定义设置二维直方图的颜色二维直方图是二元分布的直方图可视化(Basic 2D Histogram)
R语言使用ggplot2包使用geom_density()函数绘制分组密度图(添加直方图分组颜色配置)实战(density plot)