通过参数估计矩阵中的极端异常值提高 ggplot 热图表现力

问题描述 投票:0回答:1

我正在从矩阵创建热图,其中包括一些极端异常值以及变化最小的其他值。这是我目前的方法:

set.seed(123)
parameters_tot <- matrix(rnorm(1000000), nrow = 1000)
num_outliers <- 10  
outlier_values <- rnorm(num_outliers, mean = 50, sd = 5)  
outlier_positions <- matrix(sample(1:1000000, num_outliers), ncol = 1)
parameters_tot[outlier_positions] <- outlier_values

parameters_df_enet <- as.data.frame(parameters_tot)
parameters_df_enet$row <- 1:nrow(parameters_df_enet)
parameters_df_long <- gather(parameters_df_enet, key = "column", value = "value", -row)
heatmap_enet = ggplot(parameters_df_long, aes(x = column, y = row, fill = value)) +
  geom_tile() +
  scale_fill_gradient(low = "blue", high = "red") +  # Change the color gradient as needed
  labs(title = "Heatmap of Parameter Estimation Values", x = "Columns", y = "Rows")

但是,由于存在极端异常值,生成的热图不会表现出明显的颜色。如何增强热图的表现力,同时仍包含这些异常值?预先感谢。

r ggplot2 plot heatmap
1个回答
0
投票

您可以应用对数转换:

parameters_df_long$value_log <- log1p(parameters_df_long$value)

heatmap_enet <-  ggplot(parameters_df_long, aes(x = column, y = row, fill = value_log)) +
  geom_tile() +
  scale_fill_gradient(low = "blue", high = "red") +
  labs(title = "Heatmap of Parameter Estimation Values (Log)", x = "Columns", y = "Rows")

在您的示例中,我们在应用对数转换后看到不同的颜色。

© www.soinside.com 2019 - 2024. All rights reserved.