标签: geom-raster

如何删除 geom_raster 中连续 x 值之间的空间/间隙

我正在处理一些时频分解的 EEG 数据,并希望使用 ggplot2 生成类似频谱图的图形。但是,我最终在每个时间点之间都有空白。

Data <- read.csv(url("https://www.dropbox.com/s/al3cygigm86mr3s/Test_Spec_Data.csv?dl=0"))
Run Code Online (Sandbox Code Playgroud)

如果我创建一个 vanilla geom_raster,我会在 x 和 y 数据中得到间隙:

ggplot(Data,aes(Times,Frequency)) +
  geom_raster(aes(fill = ERSP))
Run Code Online (Sandbox Code Playgroud)

默认

如果我做Frequency一个因子,它会填补 y 的空白;但是,沿 x 轴的间隙仍然存在:

  ggplot(Data,aes(Times,factor(round(Frequency,digits=1)))) +
  geom_raster(aes(fill = ERSP))
Run Code Online (Sandbox Code Playgroud)

以 y 作为因子

我可以通过制作Times一个因子来消除差距。

在此处输入图片说明

但是,管理scale_x_discrete这么多数据点很麻烦(注意 x 轴标签)。此外,这些时间数据是连续的,并不是真正的因子。

geom_raster没有width类似的论点geom_bar,我在geom_raster文档中看不到任何类似的内容。

有没有办法保持Times连续但消除观察之间的差距?

r heatmap ggplot2 geom-raster

5
推荐指数
1
解决办法
2090
查看次数

如何在 R geom_raster 中更改颜色?

我正在尝试更改热图图中的颜色。我想要黄色、红色的配色方案,而不是默认的蓝色-深蓝色。

我的代码

a=as.matrix(volcano, ncol=ncol(volcano))
row.names(a)= 1:nrow(a)
library(reshape2)
a1 = melt(a)
colnames(a1) = c('X','Y','value')
head(a1)

library(ggplot2)
ggplot(a1,aes(x = X, y = Y)) +
  geom_raster(aes(fill = value),interpolate=TRUE) +
  scale_colour_gradient2(low="yellow", high="red", guide="colorbar")
Run Code Online (Sandbox Code Playgroud)

我得到以下输出,我想要不同的配色方案。我不确定为什么最后一行 -scale_colour_gradient不起作用。这里的所有其他示例都有这一行,但带有 geom_tile 函数。

上述代码的输出图

r ggplot2 geom-raster

5
推荐指数
1
解决办法
4982
查看次数

有没有指定geom_raster插值范围的方法?

我正在使用R求解具有R中两个变量的方程。我正在按序列更改两个变量,然后使用带有插值的geom_raster生成解图。

但是,在绘制数据时,我注意到绘制区域超出了我作为输入给出的y轴值的范围。

如果使用ylim对该区域施加限制,则插值图将缩小并且不再限制值。如果我使用vjust = 0,则图的顶部会限制该区域,而底部则不会。

我的可重现示例代码如下:

library(ggplot2)
library(reshape2)


x_range <- seq(0.001,10, by=0.001)
y_range <- (seq(1*10^-10, 1*10^-9, by = 1*10^-10))

FUN <- function(x, y) log10((1)/(x*y))

data <- outer(x_range, y_range, FUN)

colnames(data) <- y_range
rownames(data) <- x_range

melted_data <- melt(data)

p <- ggplot(data=melted_data)

# basic plot
p + geom_raster(aes(x=Var1, y=Var2, fill=value), interpolate = TRUE) +
  geom_hline(yintercept = 1*10^-10) +
  geom_hline(yintercept = 1*10^-9)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

# with imposed ylim
p + geom_raster(aes(x=Var1, y=Var2, fill=value), interpolate = TRUE) +
  geom_hline(yintercept = 1*10^-10) +
  geom_hline(yintercept = 1*10^-9) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 geom-raster

5
推荐指数
1
解决办法
460
查看次数

R ggplot - 无法分配大向量

我试图绘制一个相对较小的数据集,但我无法让它向我展示该图。它不断给出错误Error: cannot allocate vector of size 9.7 Gb。这对我来说没有多大意义,因为数据集很小。

> nrow(locs)
[1] 130
> head(locs)
       STATION AVGTRANGE     LAT     LONG
1: USC00286979  22.13333 40.6971 -75.2042
2: USC00360022  21.33333 40.5361 -79.8152
3: USC00360132  24.37037 40.5227 -78.3694
4: USC00360140  19.80000 40.4949 -78.4667
5: USC00360147  22.36667 41.3585 -77.9262
6: USC00360457  20.68000 40.8209 -76.4983
Run Code Online (Sandbox Code Playgroud)

我是如何策划的。

gg <- ggplot(data = locs, aes(x = LONG, y = LAT)) +
  geom_raster(aes(fill=AVGTRANGE), interpolate=TRUE)
gg # can't allocate here
Run Code Online (Sandbox Code Playgroud)

这是dput我的数据。

> dput(locs)
structure(list(STATION = structure(1:130, .Label = …
Run Code Online (Sandbox Code Playgroud)

r out-of-memory ggplot2 geom-raster

3
推荐指数
1
解决办法
1255
查看次数

结合coord_proj和geom_raster

我正在寻找一种在小规模地图上绘制栅格数据(使用ggplotgeom_raster)的方法.我想使用ggaltcoord_proj'放大'shapefile的特定区域,但我遇到了错误geom_raster only works with Cartesian coordinates

ggplot() +
    geom_polygon(data = land_df, aes(long, lat, group = group), fill = 'grey25')+
    geom_raster(data = df, aes(lon_bin, lat_bin, fill = sum_hours)) +
    coord_proj(xlim = c(-67, -63),ylim = c(0, 9))
Run Code Online (Sandbox Code Playgroud)

是否有另一种使用coord_proj生成放大光栅贴图的简单方法,并避免了geom_raster仅适用于笛卡尔坐标的限制?

我能想到的其他选项是为每个'放大'区域生成单独的shapefile,但我正在绘制许多这些栅格,而不是必须为每个栅格生成单独的shapefile,而是使用coord_proj以编程方式指定栅格地图限制.

谢谢

r ggplot2 geom-raster

2
推荐指数
1
解决办法
941
查看次数

标签 统计

geom-raster ×5

ggplot2 ×5

r ×5

heatmap ×1

out-of-memory ×1