ggplot2 / plotly 让数字悬停在条形图上
ggplot2 / plotly get numbers to hover over bars
我已经阅读并尝试了我在此处可以找到的关于相关主题的所有内容,但没有任何帮助,或者我没有正确实施解决方案,所以我决定 post 一个问题。
应要求,这也是我的数据集:
structure(list(word = c("byalo", "cherno", "cherveno", "kafyavo",
"lilavo", "oranzhevo", "rozovo", "sinyo", "sivo", "svetlolilavo"
), frequency = c(68L, 68L, 100L, 117L, 137L, 142L, 141L, 240L,
92L, 57L)), row.names = c(NA, 10L), class = "data.frame")
这是我用来获取所需图形表示的代码:
geom_bar(width = 0.75, stat = "identity", colour = "black", size = 1) +
coord_polar(theta = "x") + xlab("") + ylab("") +
ggtitle("Naming Task Word Frequency > 50") +
theme(legend.position = "none") + labs(x = NULL, y = NULL)
plotly::ggplotly(ggplot2::ggplot(Results, aes(x=word, y=frequency, fill=word)) +
geom_bar(width = 0.75, stat = "identity", colour = "black", size = 1) + xlab("") + ylab("") +
geom_text(aes(label=frequency)) +
ggtitle("Naming Task Word Frequency > 50") +
theme(legend.position = "none") + labs(x = NULL, y = NULL) +
theme(plot.subtitle = element_text(vjust = 1), plot.caption = element_text(vjust = 1), axis.text.x = element_text(angle = 90)) +
theme(panel.background = element_rect(fill = "honeydew1"), plot.background = element_rect(fill = "antiquewhite"))) %>%
config(displaylogo = F) %>% config(showLink = F)
这给了我以下结果:
我只想让数字正常悬停在条形图上。我尝试弄乱 vjust、hjust、dodge 和我在这里找到的其他建议,但结果要么相同,要么完全改变了我的图形形式。
P.S。我是初学者,我只需要对收集到的数据进行一些定量分析,并且只尝试学习我需要使用的东西。
P.S。 2 如果有人有时间回答,我也想知道,是否有办法选择我希望每个条形图的颜色。但我承认我还没有对这个问题做过研究。
其他人可能会做得更好,但我认为您有两个选择:
1) 忘掉情节吧。如果你只是做 ggplot() ,那么 vjust 参数就有效。当你添加 ggplotly 时,你失去了 vjust。
library(ggplot2)
ggplot(Results, aes(x=word, y=frequency, fill=word)) +
geom_bar(width = 0.75, stat = "identity", colour = "black", size = 1) +
xlab("") + ylab("") +
geom_text(aes(label=frequency), vjust = -.5 ) +
ggtitle("Naming Task Word Frequency > 50") +
theme(legend.position = "none") + labs(x = NULL, y = NULL) +
theme(plot.subtitle = element_text(vjust = 1),
plot.caption = element_text(vjust = 1),
axis.text.x = element_text(angle = 90)) +
theme(panel.background = element_rect(fill = "honeydew1"),
plot.background = element_rect(fill = "antiquewhite"))
2) 有计划地完成整个事情。您需要为注释提供一个列表,这有点复杂。 。我没有添加您为 ggplot 所做的其他布局 - 但这是一个开始:
library(plotly)
anns <- lapply(seq_along(Results$word),
function(i) {
list(x = Results$word[i], y = Results$frequency[i],
text = Results$frequency[i],
yanchor = "bottom", showarrow = FALSE)
})
plot_ly(Results, x = ~word, y = ~frequency, type = 'bar') %>%
layout(annotations = anns)
我已经阅读并尝试了我在此处可以找到的关于相关主题的所有内容,但没有任何帮助,或者我没有正确实施解决方案,所以我决定 post 一个问题。
应要求,这也是我的数据集:
structure(list(word = c("byalo", "cherno", "cherveno", "kafyavo",
"lilavo", "oranzhevo", "rozovo", "sinyo", "sivo", "svetlolilavo"
), frequency = c(68L, 68L, 100L, 117L, 137L, 142L, 141L, 240L,
92L, 57L)), row.names = c(NA, 10L), class = "data.frame")
这是我用来获取所需图形表示的代码:
geom_bar(width = 0.75, stat = "identity", colour = "black", size = 1) +
coord_polar(theta = "x") + xlab("") + ylab("") +
ggtitle("Naming Task Word Frequency > 50") +
theme(legend.position = "none") + labs(x = NULL, y = NULL)
plotly::ggplotly(ggplot2::ggplot(Results, aes(x=word, y=frequency, fill=word)) +
geom_bar(width = 0.75, stat = "identity", colour = "black", size = 1) + xlab("") + ylab("") +
geom_text(aes(label=frequency)) +
ggtitle("Naming Task Word Frequency > 50") +
theme(legend.position = "none") + labs(x = NULL, y = NULL) +
theme(plot.subtitle = element_text(vjust = 1), plot.caption = element_text(vjust = 1), axis.text.x = element_text(angle = 90)) +
theme(panel.background = element_rect(fill = "honeydew1"), plot.background = element_rect(fill = "antiquewhite"))) %>%
config(displaylogo = F) %>% config(showLink = F)
这给了我以下结果:
我只想让数字正常悬停在条形图上。我尝试弄乱 vjust、hjust、dodge 和我在这里找到的其他建议,但结果要么相同,要么完全改变了我的图形形式。
P.S。我是初学者,我只需要对收集到的数据进行一些定量分析,并且只尝试学习我需要使用的东西。
P.S。 2 如果有人有时间回答,我也想知道,是否有办法选择我希望每个条形图的颜色。但我承认我还没有对这个问题做过研究。
其他人可能会做得更好,但我认为您有两个选择:
1) 忘掉情节吧。如果你只是做 ggplot() ,那么 vjust 参数就有效。当你添加 ggplotly 时,你失去了 vjust。
library(ggplot2)
ggplot(Results, aes(x=word, y=frequency, fill=word)) +
geom_bar(width = 0.75, stat = "identity", colour = "black", size = 1) +
xlab("") + ylab("") +
geom_text(aes(label=frequency), vjust = -.5 ) +
ggtitle("Naming Task Word Frequency > 50") +
theme(legend.position = "none") + labs(x = NULL, y = NULL) +
theme(plot.subtitle = element_text(vjust = 1),
plot.caption = element_text(vjust = 1),
axis.text.x = element_text(angle = 90)) +
theme(panel.background = element_rect(fill = "honeydew1"),
plot.background = element_rect(fill = "antiquewhite"))
2) 有计划地完成整个事情。您需要为注释提供一个列表,这有点复杂。
library(plotly)
anns <- lapply(seq_along(Results$word),
function(i) {
list(x = Results$word[i], y = Results$frequency[i],
text = Results$frequency[i],
yanchor = "bottom", showarrow = FALSE)
})
plot_ly(Results, x = ~word, y = ~frequency, type = 'bar') %>%
layout(annotations = anns)