使用两条轨迹从绘图图表的悬停文本中隐藏特定变量
Hide specific variable from the hover text of plotly chart with two traces
我有下面的数据框,并创建了一个 plotly
带有内圆的绘图对象。我的问题是我想跳过灰色和绿色圆点中的 value
。
i <- 1
f<-bt %>% filter(issue==unique(bt$issue)[1]) %>%
ggplot(aes(x=year2))+
geom_point(aes(y=value,size=value),color="gray")+
geom_point(aes(y=value,size=percent),color="darkolivegreen")+
scale_x_continuous(n.breaks=14)+
theme(legend.position = 'none',
axis.title.y = element_blank(),
axis.text.y = element_blank())+
labs(x="")
p2<-ggplotly(f)
p2$x$data[[1]]$text <- str_replace_all(p2$x$data[[1]]$text,
"year2", "Year") %>%
str_replace_all(., fixed("percent"),
"Percentage of all signed PTAs covering NTIs")
p2$x$data[[2]]$text <- str_replace_all(p2$x$data[[2]]$text,
"year2", "Year") %>%
str_replace_all(., fixed("percent"),
"Percentage of all signed PTAs covering NTIs")
p2
我的数据:
bt<-structure(list(year2 = c(1950, 1950, 1950, 1950, 1950, 1950,
1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950,
1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950,
1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950,
1950, 1950, 1950, 1950, 1955, 1955, 1955, 1955, 1955, 1955, 1955,
1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955,
1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955), issue = c("air",
"anti_corruption", "anti_drug", "anti_terror", "biodiversity",
"chemical", "child", "contaminant", "cpr", "csr", "democracy",
"development", "eductation", "environmental_goods_services",
"ep", "esr", "fish_stock", "food_security", "forest", "gender",
"good_governance", "health", "human_trafficking", "labor_at",
"labor_at_child", "labor_at_equal_opportunity", "labor_at_forced",
"labor_at_health_and_safety", "labor_at_minimum_wage", "labor_at_unionize",
"labor_at_working_time", "labor_to", "migrantworker", "mineral",
"minority", "national_security", "region", "religion", "renewable_energy",
"rule_of_law", "social", "waste", "water", "air", "air", "anti_corruption",
"anti_corruption", "anti_drug", "anti_drug", "anti_terror", "anti_terror",
"biodiversity", "biodiversity", "chemical", "chemical", "child",
"child", "contaminant", "contaminant", "cpr", "cpr", "csr", "csr",
"democracy", "democracy", "development", "development", "eductation",
"eductation", "environmental_goods_services"), value = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 8, NA, NA, 8, NA, NA,
NA, NA, NA, NA, 8, NA, NA, NA, NA, NA, NA, NA, NA, NA, 8, NA,
NA, NA, 16, NA, NA, NA, NA, 8, NA, NA, NA, NA, 12, 1, NA, NA,
12, 1, NA, NA, NA, NA, NA, NA, NA, NA, 24, 2, NA, NA, 12, 1,
36, 3, NA, NA, NA), percent = c(NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 0.125, NA, NA, 0.125, NA, NA, NA, NA, NA, NA, 0.125,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.125, NA, NA, NA, 0.0625,
NA, NA, NA, NA, 0.125, NA, NA, NA, NA, 0.0833333333333333, 2,
NA, NA, 0.0833333333333333, 2, NA, NA, NA, NA, NA, NA, NA, NA,
0.0416666666666667, 1, NA, NA, 0.0833333333333333, 2, 0.0277777777777778,
0.666666666666667, NA, NA, NA)), row.names = c(NA, -70L), class = c("tbl_df",
"tbl", "data.frame"))
我删除了过滤器以便绘制点。如果你想要在所有点上使用相同的工具提示,你可以将 text
添加到 ggplot(aes())
。如果您仍然想要 darkolivegreen
点中的 percent
,则需要将 text
添加到图层中。
短短几年,文字在ggplot()
:
f <- bt %>% # filter(issue == unique(bt$issue)[1]) %>%
ggplot(aes(x = year2, text = paste0("Year: ", year2))) +
geom_point(aes(y = value, size = value), color = "gray") +
geom_point(aes(y = value, size = percent), color = "darkolivegreen") +
scale_x_continuous(n.breaks = 14) +
theme(legend.position = 'none',
axis.title.y = element_blank(),
axis.text.y = element_blank()) +
labs(x = "")
ggplotly(f, tooltip = "text")
如果您想要来自 percent
的值在适当的点上,请使用此选项。顺便说一句,我已将 percent
数据格式化为百分比。我提供了两种不同的方法来做到这一点。其中一种方法被注释掉了。没有被注释掉的使用scale
包。两者都有效;当然,这取决于你。
f <- bt %>% # filter(issue == unique(bt$issue)[1]) %>%
ggplot(aes(x = year2)) +
geom_point(aes(y = value, size = value, text = paste0("Year: ", year2)),
color = "gray") +
geom_point(aes(y = value, size = percent,
# text = paste0("Year: ", year2, "\nPercent: ", round(percent, 3) * 100, "%")),
text = paste0("Year: ", year2, "\nPercent: ", scales::percent(percent))),
color = "darkolivegreen") +
scale_x_continuous(n.breaks = 14) +
theme(legend.position = 'none',
axis.title.y = element_blank(),
axis.text.y = element_blank()) +
labs(x = "")
ggplotly(f, tooltip = "text")
我有下面的数据框,并创建了一个 plotly
带有内圆的绘图对象。我的问题是我想跳过灰色和绿色圆点中的 value
。
i <- 1
f<-bt %>% filter(issue==unique(bt$issue)[1]) %>%
ggplot(aes(x=year2))+
geom_point(aes(y=value,size=value),color="gray")+
geom_point(aes(y=value,size=percent),color="darkolivegreen")+
scale_x_continuous(n.breaks=14)+
theme(legend.position = 'none',
axis.title.y = element_blank(),
axis.text.y = element_blank())+
labs(x="")
p2<-ggplotly(f)
p2$x$data[[1]]$text <- str_replace_all(p2$x$data[[1]]$text,
"year2", "Year") %>%
str_replace_all(., fixed("percent"),
"Percentage of all signed PTAs covering NTIs")
p2$x$data[[2]]$text <- str_replace_all(p2$x$data[[2]]$text,
"year2", "Year") %>%
str_replace_all(., fixed("percent"),
"Percentage of all signed PTAs covering NTIs")
p2
我的数据:
bt<-structure(list(year2 = c(1950, 1950, 1950, 1950, 1950, 1950,
1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950,
1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950,
1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950,
1950, 1950, 1950, 1950, 1955, 1955, 1955, 1955, 1955, 1955, 1955,
1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955,
1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955), issue = c("air",
"anti_corruption", "anti_drug", "anti_terror", "biodiversity",
"chemical", "child", "contaminant", "cpr", "csr", "democracy",
"development", "eductation", "environmental_goods_services",
"ep", "esr", "fish_stock", "food_security", "forest", "gender",
"good_governance", "health", "human_trafficking", "labor_at",
"labor_at_child", "labor_at_equal_opportunity", "labor_at_forced",
"labor_at_health_and_safety", "labor_at_minimum_wage", "labor_at_unionize",
"labor_at_working_time", "labor_to", "migrantworker", "mineral",
"minority", "national_security", "region", "religion", "renewable_energy",
"rule_of_law", "social", "waste", "water", "air", "air", "anti_corruption",
"anti_corruption", "anti_drug", "anti_drug", "anti_terror", "anti_terror",
"biodiversity", "biodiversity", "chemical", "chemical", "child",
"child", "contaminant", "contaminant", "cpr", "cpr", "csr", "csr",
"democracy", "democracy", "development", "development", "eductation",
"eductation", "environmental_goods_services"), value = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 8, NA, NA, 8, NA, NA,
NA, NA, NA, NA, 8, NA, NA, NA, NA, NA, NA, NA, NA, NA, 8, NA,
NA, NA, 16, NA, NA, NA, NA, 8, NA, NA, NA, NA, 12, 1, NA, NA,
12, 1, NA, NA, NA, NA, NA, NA, NA, NA, 24, 2, NA, NA, 12, 1,
36, 3, NA, NA, NA), percent = c(NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 0.125, NA, NA, 0.125, NA, NA, NA, NA, NA, NA, 0.125,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.125, NA, NA, NA, 0.0625,
NA, NA, NA, NA, 0.125, NA, NA, NA, NA, 0.0833333333333333, 2,
NA, NA, 0.0833333333333333, 2, NA, NA, NA, NA, NA, NA, NA, NA,
0.0416666666666667, 1, NA, NA, 0.0833333333333333, 2, 0.0277777777777778,
0.666666666666667, NA, NA, NA)), row.names = c(NA, -70L), class = c("tbl_df",
"tbl", "data.frame"))
我删除了过滤器以便绘制点。如果你想要在所有点上使用相同的工具提示,你可以将 text
添加到 ggplot(aes())
。如果您仍然想要 darkolivegreen
点中的 percent
,则需要将 text
添加到图层中。
短短几年,文字在ggplot()
:
f <- bt %>% # filter(issue == unique(bt$issue)[1]) %>%
ggplot(aes(x = year2, text = paste0("Year: ", year2))) +
geom_point(aes(y = value, size = value), color = "gray") +
geom_point(aes(y = value, size = percent), color = "darkolivegreen") +
scale_x_continuous(n.breaks = 14) +
theme(legend.position = 'none',
axis.title.y = element_blank(),
axis.text.y = element_blank()) +
labs(x = "")
ggplotly(f, tooltip = "text")
如果您想要来自 percent
的值在适当的点上,请使用此选项。顺便说一句,我已将 percent
数据格式化为百分比。我提供了两种不同的方法来做到这一点。其中一种方法被注释掉了。没有被注释掉的使用scale
包。两者都有效;当然,这取决于你。
f <- bt %>% # filter(issue == unique(bt$issue)[1]) %>%
ggplot(aes(x = year2)) +
geom_point(aes(y = value, size = value, text = paste0("Year: ", year2)),
color = "gray") +
geom_point(aes(y = value, size = percent,
# text = paste0("Year: ", year2, "\nPercent: ", round(percent, 3) * 100, "%")),
text = paste0("Year: ", year2, "\nPercent: ", scales::percent(percent))),
color = "darkolivegreen") +
scale_x_continuous(n.breaks = 14) +
theme(legend.position = 'none',
axis.title.y = element_blank(),
axis.text.y = element_blank()) +
labs(x = "")
ggplotly(f, tooltip = "text")