我有一个由两类单词组成的 whatsapp 对话:
bla bla bla bla
<indig>fu fu</indig>
<indig>fu fu</indig>
bla bla bla bla bla bla.. bla bla bla bla bla
<indig>fu</indig>?
<indig>fu fu</indig>?
bla bla bla bla bla bla bla bla bla bla bla bla
bla
<indig>fu fu</indig>
bla bla <indig>fu</indig>
bla <indig>fu</indig>
bla.. bla
bla bla bla bla bla bla ??
bla bla bla
bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla
bla bla <indig>fu</indig> bla🤣🤣🤣
我想将 bla
和 fu
可视化为使用 2 种颜色的条形图,以便我可以看到 fu
颜色出现在哪里( start, middle, end...) 以及 bla
颜色占多数的位置。到目前为止,我只有一个示例,没有要显示的代码:
这里黑色可能与 fu
相关联,白色可能与 bla
相关联。有什么想法可以在 ggplot2
中绘制类似的东西吗?
最佳答案
我认为这基本上分为两部分 - 格式化数据和绘制绘图。
格式化数据
# Make one string
input_string <- paste(input_string, collapse = " ")
# delete everything <inside> angle brackets
input_string <- gsub("<.*?>", "", input_string)
# Split on spaces
input_string <- strsplit(input_string, "\\s") |>
unlist()
# delete all non-alpha e.g. "fu?" becomes "fu"
input_string <- gsub("[^[:alpha:]]", "", input_string)
words_to_plot <- c("fu", "bla")
binary_vector_to_plot <- input_string[input_string %in% words_to_plot]
plot_df <- data.frame(
x = seq_along(binary_vector_to_plot),
y = binary_vector_to_plot
)
head(plot_df)
# x y
# 1 1 bla
# 2 2 bla
# 3 3 bla
# 4 4 bla
# 5 5 fu
# 6 6 fu
绘制情节
library(ggplot2)
ggplot(plot_df) +
geom_vline(
aes(
xintercept = x,
color = y
)
) +
theme_bw() +
scale_color_manual(
values = c("white", "black")
) +
ggtitle("Barcode plot") +
theme(
legend.key = element_rect(fill = "grey"),
legend.title = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_blank()
)
输入数据
input_string <- c(
"bla bla bla bla",
"<indig>fu fu</indig>",
"<indig>fu fu</indig>",
"bla bla bla bla bla bla.. bla bla bla bla bla",
"<indig>fu</indig>?",
"<indig>fu fu</indig>?",
"bla bla bla bla bla bla bla bla bla bla bla bla",
"bla",
"<indig>fu fu</indig>",
"bla bla <indig>fu</indig>",
"bla <indig>fu</indig>",
"bla.. bla",
"bla bla bla bla bla bla ??",
"bla bla bla",
"bla bla bla bla bla bla bla",
"bla bla bla bla bla bla bla bla bla",
"bla bla <indig>fu</indig> bla<U+0001F923><U+0001F923><U+0001F923>"
)
关于r - ggplot2:将长字符串(只有 2 个单词以不同方式重复)可视化为条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73959159/