美文网首页
R-找数据的波谷:找出位置和数值并画在图上

R-找数据的波谷:找出位置和数值并画在图上

作者: MYS_bio_man | 来源:发表于2024-08-19 15:39 被阅读0次

R-找数据的波谷:找出位置和数值并画在图上

1. 普通函数

Assuming your data is stored in a variable called data

data <- c(1,0,9,8,77,5,3,0,0,8,9,55,4,33,22,11,2) # Replace with your actual data

Calculate density

dens <- density(data)

Find indices of local minima

find_minima <- function(dens_y) {    
  local_minima <- c(FALSE, diff(sign(diff(dens_y))) > 0, FALSE)    
  return(local_minima)
}

Apply the function to density values

minima_indices <- find_minima(dens$y)

Get the x value corresponding to the valley

valley_x <- dens$x[minima_indices]

Plot the density and highlight the valley

plot(dens, main = "Density Distribution with Valley")
polygon(dens, col="lightcoral", border="black")
points(valley_x, dens$y[minima_indices], col="blue", pch=19)
image.png

2. ggplot2的实现

加载必要的包

library(ggplot2)

假设数据存储在变量 data 中,这里顺便换组数据试试看

data <- c(1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 3)

计算密度

dens <- density(data)

找到局部极小值的索引

find_minima <- function(dens_y) {
    local_minima <- c(FALSE, diff(sign(diff(dens_y))) > 0, FALSE)
    return(local_minima)
}

应用函数找出密度中的极小值

minima_indices <- find_minima(dens$y)

获取波谷对应的x值和y值

valley_x <- dens$x[minima_indices]
valley_y <- dens$y[minima_indices]

将密度估计结果转化为数据框,以便使用ggplot2

df <- data.frame(x = dens$x, y = dens$y)

使用ggplot2绘制密度图,并标注波谷

ggplot(df, aes(x = x, y = y)) +
    geom_line(size = 1) +
    geom_area(fill = "lightcoral", alpha = 0.5) +
    geom_point(aes(x = valley_x, y = valley_y), color = "blue", size = 3) +
    ggtitle("let us see 1 see") +
    labs(x = "Value", y = "Density") +
    theme_minimal(base_size = 15) +
    theme(
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_rect(color = "black", fill = NA, size = 1)
    )
image.png

相关文章

  • 122. Best Time to Buy and Sell S

    只需要找连续的波谷和波峰, 在波谷买入,在波峰卖出。所以只需要判断连续的波峰和波谷就行。 可以得到证明,最低的波谷...

  • 数据可视化系列 | 比较关系之柱状图

    数据可视化的方法显示数值与数值之间的不同或者相似之处。使用图形的长度、宽度、位置、面积、角度和颜色来比较数值的大小...

  • 选择排序

    选择排序,从左到右依次找出最小的数值,从所有记录中选出最小的一个数据元素与第一个位置的记录交换;然后在剩下的记录当...

  • 数据类型是什么?

    数据分为数值数据和非数值数据,数值数据是一些整数、实数或复数;非数值数据包括字符、文字、图形、图像、语音等。 数据...

  • R语言-配对t检验

    准备data demo 方法一:把配对的数据分别保存在两个数值型向量里(确保数值的配对位置) 方法二:把配对的数据...

  • leetCode进阶算法题+解析(七十九)

    矩形区域不超过K的最大数值和 题目:给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内...

  • 【R编程-2】数据类型

    变量分配R-对象和R对象的数据类型变为变量的数据类型。有许多类型的R-对象。常用的有: 矢量 列表 矩阵 数组 因...

  • 批量绘图 | EXCEL绘制基站扇区地图

    一、需求 通信行业网管和网优部门日常工作,有时需要在地图上标注基站,并根据基站的参数在地图上绘制基站扇区。 数据源...

  • Lesson 1 - 描述统计学

    目录 1. 数据类型1.1 数值数据连续和离散1.2 分类数据定序和定类1.3 数值数据和分类数据的比较 2. 概...

  • js的高阶函数( filter()、map()、reduce()

    arr = [20,40,12,232,23,232];需求1:找出数组中数值低于100的元素,组成新数组并返回需...

网友评论

      本文标题:R-找数据的波谷:找出位置和数值并画在图上

      本文链接:https://www.haomeiwen.com/subject/qabmkjtx.html