ggplot - R 中的自定义交互 Plotly
Custom interaction Plotly in ggplot - R
我有一个庞大的数据集,这使得图表绘制变得乏味和复杂。
假设这个简化的数据集:
library(data.table)
library(plotly)
library(ggplot2)
library(dplyr)
df <- data.table(continent = c(rep("America",3), rep("Europe",4)),
state = c("USA", "Brazil", "Chile", "Italy", "Swiss", "Spain", "Greece"),
X = rnorm(7, 5, 1),
Y = rnorm(7, -13, 1),
)
df$X_sd = sd(df$X)
df$Y_sd = sd(df$Y)
考虑为“状态”设置超过 30 个级别,这使得很难用不同的颜色或形状来显示它们。
我决定使用 plotly
来展示这个数据集。
这是我所做的:
p <- df %>%
ggplot(aes(x=X,
y=Y,
fill = continent,
color = continent)) +
geom_errorbarh(aes(xmin = X - X_sd,
xmax = X + X_sd),
size = 0.5,
alpha = 0.3) +
geom_errorbar(aes(ymin = Y - Y_sd,
ymax = Y + Y_sd),
size = 0.5,
alpha = 0.3) +
geom_point(shape=21,
color="black",
size=3) +
theme_bw()
ggplotly(p)
但是,交互式 window 不显示有关国家/地区的信息,这正是我想要实现的。
事实上,每次我经过一个点时,我都希望有一个 window 显示:大陆、国家、X 和 Y(如果我会有更多的因素或列,我想成为也包括它们)。
我试图在美学中添加 shape = country
,但是 1) 没有足够的形状,2) 它反对我为 geom_point()
设置形状 = 21 的决定,以及 3)它添加了一个我不想要的巨大图例。
如何在不添加额外和不需要的美学的情况下个性化 plotly
的交互 window?
此外,我尝试使用以下方法删除图例:
guides(fill="none", color="none")+
或通过
%>% hide_legend()
但不管怎样,都行不通。如何删除图例?
您可以在 aes
中添加 label
以添加 state
等因素。你可以多次这样做。您可以使用以下代码:
p <- df %>%
ggplot(aes(label = state,
x=X,
y=Y,
fill = continent)) +
geom_errorbarh(aes(xmin = X - X_sd,
xmax = X + X_sd),
size = 0.5,
alpha = 0.3) +
geom_errorbar(aes(ymin = Y - Y_sd,
ymax = Y + Y_sd),
size = 0.5,
alpha = 0.3) +
geom_point(shape=21,
color="black",
size=3) +
theme_bw() +
theme(legend.position = "none")
ggplotly(p)
输出:
我有一个庞大的数据集,这使得图表绘制变得乏味和复杂。
假设这个简化的数据集:
library(data.table)
library(plotly)
library(ggplot2)
library(dplyr)
df <- data.table(continent = c(rep("America",3), rep("Europe",4)),
state = c("USA", "Brazil", "Chile", "Italy", "Swiss", "Spain", "Greece"),
X = rnorm(7, 5, 1),
Y = rnorm(7, -13, 1),
)
df$X_sd = sd(df$X)
df$Y_sd = sd(df$Y)
考虑为“状态”设置超过 30 个级别,这使得很难用不同的颜色或形状来显示它们。
我决定使用 plotly
来展示这个数据集。
这是我所做的:
p <- df %>%
ggplot(aes(x=X,
y=Y,
fill = continent,
color = continent)) +
geom_errorbarh(aes(xmin = X - X_sd,
xmax = X + X_sd),
size = 0.5,
alpha = 0.3) +
geom_errorbar(aes(ymin = Y - Y_sd,
ymax = Y + Y_sd),
size = 0.5,
alpha = 0.3) +
geom_point(shape=21,
color="black",
size=3) +
theme_bw()
ggplotly(p)
但是,交互式 window 不显示有关国家/地区的信息,这正是我想要实现的。 事实上,每次我经过一个点时,我都希望有一个 window 显示:大陆、国家、X 和 Y(如果我会有更多的因素或列,我想成为也包括它们)。
我试图在美学中添加 shape = country
,但是 1) 没有足够的形状,2) 它反对我为 geom_point()
设置形状 = 21 的决定,以及 3)它添加了一个我不想要的巨大图例。
如何在不添加额外和不需要的美学的情况下个性化 plotly
的交互 window?
此外,我尝试使用以下方法删除图例:
guides(fill="none", color="none")+
或通过
%>% hide_legend()
但不管怎样,都行不通。如何删除图例?
您可以在 aes
中添加 label
以添加 state
等因素。你可以多次这样做。您可以使用以下代码:
p <- df %>%
ggplot(aes(label = state,
x=X,
y=Y,
fill = continent)) +
geom_errorbarh(aes(xmin = X - X_sd,
xmax = X + X_sd),
size = 0.5,
alpha = 0.3) +
geom_errorbar(aes(ymin = Y - Y_sd,
ymax = Y + Y_sd),
size = 0.5,
alpha = 0.3) +
geom_point(shape=21,
color="black",
size=3) +
theme_bw() +
theme(legend.position = "none")
ggplotly(p)
输出: