gpt4 book ai didi

r - 使用条形图函数 R 绘制间隔

转载 作者:行者123 更新时间:2023-12-05 02:20:44 26 4
gpt4 key购买 nike

我正在使用这个问题中的解决方案来尝试绘制具有指定间隔的条形图:

Create categorical variable in R based on range

我创建了我的间隔并尝试在 barplot 函数中使用它们,但我显然在某处遗漏了一个步骤,我不确定如何让它工作。这是我的代码和我得到的错误:

> library(lattice)

> a = c(0,10)
> b = c(11,20)
> c = c(21,30)
> d = c(31,40)
> e = c(41,50)
> f = c(51,60)
> g = c(61,70)
> h = c(71,80)
> i = c(81,90)
> j = c(91,100)
> k = c(101,120)
> l = c(121,150)
> m = c(151,200)
> n = c(201,500)
> o = c(501,3600)

> mybins = matrix(rbind(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o), ncol=2)
> shx <- shingle(data5$q3totalScleralLensesFit, intervals=mybins)
> shx
Intervals:
min max count
1 0 10 140
2 11 20 117
3 21 30 78
4 31 40 31
5 41 50 72
6 51 60 5
7 61 70 6
8 71 80 28
9 81 90 3
10 91 100 49
11 101 120 7
12 121 150 28
13 151 200 25
14 201 500 61
15 501 3600 28

> bp <- barplot(shx, main="", xlab="", ylim=c(0,160), ylab="", las=2, cex.names=0.75)

Error in barplot.default(shx, main = "", xlab = "", ylim = c(0, 160), :
'height' must be a vector or a matrix

我不知道如何修复错误。有没有更简单的方法来为条形图制作这样的垃圾箱,或者有人对如何使间隔与条形图一起工作有任何建议吗?

谢谢!

最佳答案

我之前没有使用过 shingle 函数,但它似乎是为创建一个 shingle plot 而不是条形图而设置的,尽管我可能没有知道用 shingle 对象创建条形图。无论如何,下面的代码显示了如何使用基本图形、latticeggplot2 创建条形图,但使用 cut函数来创建容器。

关于您收到的错误需要注意的问题:barplot 是一个基本的图形函数。它期望将条形高度值的数字向量作为其第一个参数。但是 shx 是一个 shingle 对象,而不是一个高度向量,因此会出现错误。原则上,有人可以为 barplot 编写一个“shingle 方法”,使 barplotshingle 对象返回条形图,但是这样的方法目前不存在,也不是必需的,因为还有其他“标准”方法可以创建条形图。

如下所示,绘制 shingle 对象的方法是调用通用的 plot 函数,因为 plot “知道”当它收到一个 shingle 对象时,它应该返回一个 lattice shingle plot。如果你运行 methods(plot),你会看到 plot 有几十个“方法”(包括 plot.shingle)决定什么 plot 会,这取决于将什么类型的对象提供给 plot 函数。

## Fake data
set.seed(5)
data5 = data.frame(q3totalScleralLensesFit = runif(1000,0,3600))

## Create shingle object

# Easier way to create bins
bins = c(0, seq(11,101,10),121,151,201,501,3601)
mybins = cbind(bins, lead(bins) - 1)[-length(bins),]

shx <- shingle(data5$q3totalScleralLensesFit, intervals=mybins)

格子瓦图

plot(shx)

enter image description here

现在让我们设置用于创建条形图的数据。我们将使用 cut 函数:

# Create bins using cut function
data5$breaks = cut(data5$q3totalScleralLensesFit,
breaks=c(seq(0,100,10),120,150,200,500,3600),
include.lowest=TRUE)

基础图形条形图

barplot(table(data5$breaks), horiz=TRUE, las=1)

enter image description here

格子条形图

barchart(data5$breaks)

enter image description here

ggplot2 条形图

library(ggplot2)

ggplot(data5, aes(breaks)) +
geom_bar() +
coord_flip() +
theme_bw()

enter image description here

关于r - 使用条形图函数 R 绘制间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37926933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com