在ggplot2条形图中使每个数据点都有自己的标记
Make each data point its own mark in ggplot2 bar chart
我正在为 R 中的 ggplot 报告自动化重新创建一系列图形和图表,其中一个是下图。原始图表的每个数据点都有自己的标记(我敢肯定有更好的方式来表达这一点,但我现在想不起来,抱歉),我很确定我几年前见过类似的东西但是我又不记得了。 ggplot 中是否有任何 function/argument 允许我将第一张图表更改为第二张图表。
我目前的图表;
我想要的输出(请原谅糟糕的绘画尝试);
示例数据:
df <- data.frame(person = c("staff", "staff", "customer", "staff", "customer", "customer", "customer", "staff", "customer", "staff"),
date = c("August", "August", "September", "September", "September", "October", "October", "October", "October", "November"))
示例代码:
figure1 <-
df %>%
ggplot() +
geom_bar(
mapping = aes(
x = date,
fill = person),
col = "black"
) %>%
scale_x_date(
date_breaks = "1 month",
date_labels = "%b"
)
谢谢!
我不知道 ggplot2 中有现成的函数可以为您执行此操作,但 stat_bin()
的缺点是它汇总了数据,而您必须为您的直方图跳过此汇总步骤。
这是一个辅助函数,可以将 bins 分配给可以与 geom_col()
一起使用的观测值。我还添加了一个黄色的直方图,以显示轮廓是相同的。
library(ggplot2)
binwidth <- 0.1
# Helper function for histogram
assign_bin <- function(x, binwidth = 0.1) {
cuts <- seq(min(x) - binwidth,
max(x) + binwidth,
by = binwidth)
cuts[findInterval(x, cuts)]
}
ggplot(iris) +
geom_col(
aes(x = assign_bin(Sepal.Width, binwidth),
y = 1,
fill = Species),
width = binwidth,
colour = "black",
position = "stack"
) +
geom_histogram(
aes(Sepal.Width),
binwidth = 0.1,
fill = NA,
colour = "yellow"
)
由 reprex package (v1.0.0)
于 2021-03-30 创建
我正在为 R 中的 ggplot 报告自动化重新创建一系列图形和图表,其中一个是下图。原始图表的每个数据点都有自己的标记(我敢肯定有更好的方式来表达这一点,但我现在想不起来,抱歉),我很确定我几年前见过类似的东西但是我又不记得了。 ggplot 中是否有任何 function/argument 允许我将第一张图表更改为第二张图表。
我目前的图表;
我想要的输出(请原谅糟糕的绘画尝试);
示例数据:
df <- data.frame(person = c("staff", "staff", "customer", "staff", "customer", "customer", "customer", "staff", "customer", "staff"),
date = c("August", "August", "September", "September", "September", "October", "October", "October", "October", "November"))
示例代码:
figure1 <-
df %>%
ggplot() +
geom_bar(
mapping = aes(
x = date,
fill = person),
col = "black"
) %>%
scale_x_date(
date_breaks = "1 month",
date_labels = "%b"
)
谢谢!
我不知道 ggplot2 中有现成的函数可以为您执行此操作,但 stat_bin()
的缺点是它汇总了数据,而您必须为您的直方图跳过此汇总步骤。
这是一个辅助函数,可以将 bins 分配给可以与 geom_col()
一起使用的观测值。我还添加了一个黄色的直方图,以显示轮廓是相同的。
library(ggplot2)
binwidth <- 0.1
# Helper function for histogram
assign_bin <- function(x, binwidth = 0.1) {
cuts <- seq(min(x) - binwidth,
max(x) + binwidth,
by = binwidth)
cuts[findInterval(x, cuts)]
}
ggplot(iris) +
geom_col(
aes(x = assign_bin(Sepal.Width, binwidth),
y = 1,
fill = Species),
width = binwidth,
colour = "black",
position = "stack"
) +
geom_histogram(
aes(Sepal.Width),
binwidth = 0.1,
fill = NA,
colour = "yellow"
)
由 reprex package (v1.0.0)
于 2021-03-30 创建