У меня есть набор данных, который выглядит следующим образом:
ID <- paste("S",seq(1, 120, 1), sep="")
Days <- round(rnorm(120, 100, 20), 0)
Sales <- round(rnorm(120, 16, 10), 2)
mult <-round(rnorm(120, 1.4, 0.4), 2)
mult[mult<1] <-1
Items_Sold <- round(Sales*mult, 2)
Items_Sold_Decile <-factor(ntile(Items_Sold, 10))
reprex_plotly <- data.frame(ID, Days, Sales, Items_Sold, Items_Sold_Decile)
И я хочу построить его с помощью ggplot, используя plotly для всплывающих подсказок (чтобы идентификаторы можно было видеть без скучивания графика с метками). Я никогда раньше не использовал сюжеты, и у меня нет знаний о python и минимальных знаниях HTML, но я относительно хорошо знаю ggplot2.
Мой код:
# make colour scale:
red_to_green <- colorRampPalette(c("#800000", "#e6194b", "#f58231", "#ffe119", "#bcf60c", "#3cb44b"))
reprex_plot <- ggplot(reprex_plotly, aes(x=Sales, y=Items_Sold, col=Items_Sold_Decile, size=Days)) +
#add three ablines to represent 1, 2 and 3 items per sale thresholds:
geom_abline(slope=1, intercept=0, col="red", linetype="dotted", size=0.7) +
geom_abline(slope=2, intercept=0, col="orange", linetype="dotted", size=0.7) +
geom_abline(slope=3, intercept=0, col="green", linetype="dotted", size=0.7) +
# now add salesperson points:
geom_point(aes(text=paste(ID, "<br>", "Items Per Sale = ", round(Items_Sold/Sales, 2))), alpha=0.7) +
# hline for items sold target (12.5 per day):
geom_hline(yintercept=12.5, linetype="dashed", size=0.5) +
# theme stuff:
theme_bw() +
labs(y="Average Items Sold", x="Average Sales", title = "Salesperson Performance") +
scale_color_manual(values=c(red_to_green(10))) +
theme(panel.grid.minor = element_line(colour="lightgrey", size=0.5)) +
theme(panel.grid.major = element_line(colour="lightgrey", size=0.5)) +
theme(axis.text.x = element_text(face="bold", size=10)) +
theme(axis.text.y = element_text(face="bold", size=12)) +
theme(axis.title.x = element_text(face="bold", size=16)) +
theme(axis.title.y = element_text(face="bold", size=16)) +
theme(legend.text= element_text(face="bold", size=12)) +
theme(legend.title= element_text(face="bold", size=16)) +
theme(plot.title= element_text(face="bold", size=16, hjust=0.5)) +
scale_y_continuous(limits=c(0,70), breaks= seq(0,100,10), minor_breaks=seq(0,100,5)) +
scale_x_continuous(limits=c(0,40), breaks= seq(0,100,2), minor_breaks=seq(0,100,1))
ggplotly(reprex_plot)
Кажется, я не могу встроить его сюда, поскольку он продолжает падать, но вот скриншот того, как он выглядит (или вы можете создать его самостоятельно из кода):
![screenshot of graph](https://i.stack.imgur.com/LXyfH.png)
Это замечательно, но я бы также хотел добавить текстовые всплывающие подсказки на абстракции и хлайне, когда вы наводите на них курсор, например, "Целевые товары, проданные за день = 12,5" или "Предметы на продажу = 2" , Кто-нибудь знает, как добавить это к сюжету?
Кроме того, почему заголовок легенды удаляется от легенды и отсекается от экрана при вызове с помощью ggplotly () по сравнению с ggplot? Как мне предотвратить это?
(Если кто-то может порекомендовать некоторые базовые учебники по ggplotly, предназначенные для людей, знакомых с ggplot, но не заговорщицких, которые также будут очень полезны - все, что я делаю » Мы обнаружили, что до сих пор, похоже, для опытных заговорщиков, пытающихся выучить ggplot!)