I have the dataframe below and create a plotly
plot object with inner circles. My issue is that I want to skip the value
from both the gray and the green dots.
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
My data:
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"))
CodePudding user response:
I removed the filter so that points plotted. If you want the same tooltip in all points, you can add the text
to ggplot(aes())
. If you still wanted percent
in the darkolivegreen
points, you will need to add the text
to the layers.
Just years, with text in 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")
If you want the values from percent
on the appropriate points, use this option. By the way, I've formatted the percent
data as percentages. I provided two different ways of doing this. One of the methods is commented out. The one that is not commented out uses the scale
package. Both work; it's up to you, of course.
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")