R 直方图 - 频率范围

发布于 2024-11-02 10:17:19 字数 253 浏览 4 评论 0原文

我正在尝试获取直方图上的最大频率。我有一个值列表。然后,我执行以下操作:

hist(list, breaks=length(list), freq=TRUE)

它会自动确定 x 轴和 y 轴的范围。 y 轴是频率,x 轴是列表中的值。

那么,我怎样才能找到该图上显示的最大频率呢?

我试图在图表的右上角制作一个图例,所以我需要获取最大频率值。或者有没有办法告诉 R 将图例框放在图表的右上角?

I'm trying to get the maximum frequency on a histogram graph. I have a list of values. Then, I do the following:

hist(list, breaks=length(list), freq=TRUE)

and it automatically makes the ranges for the x and y axis. The y axis is the frequencies, and the x axis is the values in the list.

So, how can I find the maximum frequency that will show up on this graph?

I'm trying to make a legend in the top right corner of my graph, so I need to get the maximum frequency value. Or is there a way to tell R to put a legend box in the top right corner of a graph?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我是男神闪亮亮 2024-11-09 10:17:19

直方图的值可以在 R 中存储为数据框。以 OP 的示例数据框“列表”为例,您可以:

list_histo <- hist(list, breaks=length(list), freq=TRUE)

只需在 R 中输入

list_histo 

即可显示新的“元”数据框,其中包含有关直方图的信息(此处显示的数据是任意的并且用于说明目的):

$breaks
[1] 0.40 0.42 0.44 0.46 0.48 0.50 0.52 0.54 0.56 0.58 0.60 0.62 0.64 0.66 0.68
[16] 0.70 0.72 0.74 0.76

$counts
[1]      1     15    112    878   4734  17995  51094 110146 178855 216454
[11] 194536 130591  64218  23017   6117   1070    144     23

$intensities
[1]  0.00005  0.00075  0.00560  0.04390  0.23670  0.89975  2.55470  5.50730
[9]  8.94275 10.82270  9.72680  6.52955  3.21090  1.15085  0.30585  0.05350
[17]  0.00720  0.00115

$density
[1]  0.00005  0.00075  0.00560  0.04390  0.23670  0.89975  2.55470  5.50730
[9]  8.94275 10.82270  9.72680  6.52955  3.21090  1.15085  0.30585  0.05350
[17]  0.00720  0.00115

$mids
[1] 0.41 0.43 0.45 0.47 0.49 0.51 0.53 0.55 0.57 0.59 0.61 0.63 0.65 0.67 0.69
[16] 0.71 0.73 0.75

$xname
[1] "list_histo"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"

调用最大值现在很简单——简单地使用

max(list_histo$counts)

将返回最大值。

The values of a histogram can be stored as a data frame in R. Taking the OP's example dataframe 'list', you could:

list_histo <- hist(list, breaks=length(list), freq=TRUE)

simply typing

list_histo 

back into R will show the new 'meta' data frame containing information about the histogram (data shown here is arbitrary and for illustration purposes):

$breaks
[1] 0.40 0.42 0.44 0.46 0.48 0.50 0.52 0.54 0.56 0.58 0.60 0.62 0.64 0.66 0.68
[16] 0.70 0.72 0.74 0.76

$counts
[1]      1     15    112    878   4734  17995  51094 110146 178855 216454
[11] 194536 130591  64218  23017   6117   1070    144     23

$intensities
[1]  0.00005  0.00075  0.00560  0.04390  0.23670  0.89975  2.55470  5.50730
[9]  8.94275 10.82270  9.72680  6.52955  3.21090  1.15085  0.30585  0.05350
[17]  0.00720  0.00115

$density
[1]  0.00005  0.00075  0.00560  0.04390  0.23670  0.89975  2.55470  5.50730
[9]  8.94275 10.82270  9.72680  6.52955  3.21090  1.15085  0.30585  0.05350
[17]  0.00720  0.00115

$mids
[1] 0.41 0.43 0.45 0.47 0.49 0.51 0.53 0.55 0.57 0.59 0.61 0.63 0.65 0.67 0.69
[16] 0.71 0.73 0.75

$xname
[1] "list_histo"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"

calling the largest value is now straightforward -- simply using

max(list_histo$counts)

will return the maximum value.

裸钻 2024-11-09 10:17:19
set.seed(100)

x = rnorm(100, mean = 5, sd = 2)

res = hist(x)

res$mids[which.max(res$counts)]

[1] 4.5

根据中断的情况,条形的宽度会发生变化,但中点将为您提供所需条形的中点。这会找到计数最高(最大频率)的条形的中点

set.seed(100)

x = rnorm(100, mean = 5, sd = 2)

res = hist(x)

res$mids[which.max(res$counts)]

[1] 4.5

Depending on the breaks the widths of the bars will change, but the mids will give you the midpoint of the bar you are looking for. This finds the midpoint of the bar with the highest count (maximum frequency)

热鲨 2024-11-09 10:17:19

您可以使用 legend('topright',...) 来代替图例的 x, y 参数

Instead of x, y arguments to legend, you can use legend('topright',...)

掩于岁月 2024-11-09 10:17:19

您还可以使用 table(list)

它将返回值的列表以及它们重复的次数:

> list<-c(0.2, 0.6, 0.4, 0.5, 0.1, 0.5, 0.6, 0.6, 0.6, 0.1, 0.1, 0.6, 0.6, 0.6, 0.6)

> table(list)
list
0.1 0.2 0.4 0.5 0.6 
  3   1   1   2   8 

> max(table(list))
[1] 8

You can also use table(list)

It will return a list of the values and number of times they are repeated:

> list<-c(0.2, 0.6, 0.4, 0.5, 0.1, 0.5, 0.6, 0.6, 0.6, 0.1, 0.1, 0.6, 0.6, 0.6, 0.6)

> table(list)
list
0.1 0.2 0.4 0.5 0.6 
  3   1   1   2   8 

> max(table(list))
[1] 8
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文