这是一个geom_tile
显示小时和星期几的例子,如何才能显示每个小时(即 x 轴上的 00:00 到 23:00)?
library(tidyverse)
df %>%
ggplot(aes(hour, day, fill = value)) +
geom_tile(colour = "ivory")
Run Code Online (Sandbox Code Playgroud)
目前它每五小时显示一次:
我尝试了很多不同的方法,并且更喜欢“最佳实践”方式(即无需手动生成标签),但如果需要标签,这里有一种生成标签的方法hour_labs <- 0:23 %>% { ifelse(nchar(.) == 1, paste0("0", .), .) } %>% paste0(., ":00")
df <- structure(list(day = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个简单的代码,可以模拟网格中的二维随机游走(使用R
),然后使用 绘制数据ggplot
。
特别是,我对从 2D 网格中的几个位置(5 个点)到方形网格中心的随机游走感兴趣。它仅用于可视化目的。
然后我的想法是ggplot
在离散网格上绘制结果(如模拟的那样),可能使用函数geom_tile
。
您对我可以轻松操作的现有代码有什么建议吗?
我有一个具有以下结构的 df :
id col1 col2 col3
#1 A 1 3 3
#2 B 2 2 3
#3 C 1 2 3
#4 D 3 1 1
Run Code Online (Sandbox Code Playgroud)
我想创建一个“类似热图”的图形,其中 col1-col3 被视为因子变量(有五个级别 1-5,此处未全部显示),并且根据它们的值,它们会收到不同的颜色。我已经对以下代码进行了相对深入的了解:
df <- melt(df, id.vars="id")
p <- ggplot(df, aes(x=variable, y=id, label=value, fill=as.factor(value))) +
geom_tile(colour="white", alpha=0.2, aes(width=0.4)) +
scale_fill_manual(values=c("yellow", "orange", "red", "green", "grey")) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
labs(x = "Value", y="id") +
scale_x_discrete(expand=c(0,0))+
scale_y_discrete(expand=c(0,0))
Run Code Online (Sandbox Code Playgroud)
然而,由于某种原因,我的图块在 x 轴上的图块之间(即每个因子水平之间)有很大的灰色空白空间。输出图像看起来像这样
另外,我在每个图块的中间都有这些细白线,
所以我想做的是:1-更改图块的大小和形状(希望它是正方形且比现在小)2-删除白色瓷砖中间的线。
谢谢你!
我geom_tile()
与geom_text
from一起使用ggplot2
基本上生成一个表:
两个因素(X 和 Y)绘制在 x 轴上(产生两列图块)。因子 Y 的水平嵌套在因子 X 内。因此,绘制了因子 X 的多个相同图块(每个因子 Y 水平一个图块)。有没有办法将因子 X 的图块“合并”为更大的图块,并且每个图块仅出现一次文本?我也愿意接受使用其他功能来geom_tile()
实现这一目标的方法。
结果应该是这样的:
这是我的代码:
library(ggplot2)
dat <- data.frame(id = c(1:4, 1:4),
factor = c(rep("X", times = 4), rep("Y", times = 4)),
value = c("A", "A", "B", "B", "C", "D", "E", "F"))
ggplot(dat, aes(y = id, x = factor)) +
geom_tile(color = "black", fill = NA) +
geom_text(aes(label = value))
Run Code Online (Sandbox Code Playgroud)
y = id
必须保存。
在我的实际数据中,id 是一个因素:
dat <- …
Run Code Online (Sandbox Code Playgroud)