添加一个交互式按钮以切换映射到r中填充ggplotly的变量
使用同一组数据,我生成了两个不同的瓷砖图,如下所示: 数据: 第一个图显示了样本数量,如下所示:添加一个交互式按钮以切换映射到r中填充ggplotly的变量,r,ggplot2,plotly,ggplotly,R,Ggplot2,Plotly,Ggplotly,使用同一组数据,我生成了两个不同的瓷砖图,如下所示: 数据: 第一个图显示了样本数量,如下所示: labels1 <- factor(c("0", "1-3", "3-5", "5-7", "7-9", "9-11", "11-15", "15-20","20-90"), levels
labels1 <- factor(c("0", "1-3", "3-5", "5-7", "7-9",
"9-11", "11-15", "15-20","20-90"), levels =
c("0", "1-3", "3-5", "5-7", "7-9",
"9-11", "11-15", "15-20","20-30","30-90"))
values1 <- c("white", "#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb",
"#41b6c4", "#1d91c0", "#225ea8", "#253494","#081d58")
bar_list = c("No. 5", "No. 6", "No. 8", "No. 10", "No. 11", "No. 14", "No. 18")
plot1 <- ggplot(coupler.graph) + aes(x = Category, y = fct_inorder(`Bar Size`), fill = factor(x,
levels = c("0", "1-3", "3-5", "5-7", "7-9",
"9-11", "11-15", "15-20","20-30", "30-90"))) +
geom_tile(width=0.9, height=0.9) + theme_classic() + scale_fill_manual(labels = factor(labels1), values = values1) +
labs(x = "Splicer Type", y = "Bar Size") + scale_y_discrete(limits = bar_list) +
theme(plot.title = element_blank(), axis.text = element_text(color = "black", size = 12), axis.ticks.x = element_blank(),
axis.line = element_line(color = "black", size = 0.2), axis.ticks.y = element_line(color = "black", size = 0.2),
axis.title.y = element_text(color = "black", size = 16, margin = margin(0,40,0,0)),
axis.title.x = element_text(color = "black", size = 16, margin = margin(35,0,0,0)),
legend.title = element_blank(), legend.text = element_text(color = "black", size = 12))
ggplotly(
p = ggplot2::last_plot(),
width = NULL,
height = NULL,
tooltip = c("Category", "Failure"),
dynamicTicks = FALSE,
layerData = 1,
originalData = TRUE,) %>% add_annotations( text="Number of\nSpecimens", xref="paper", yref="paper",
x=1.1, xanchor="left", y=0.8, yanchor="bottom", font = list(size = 18),
legendtitle=TRUE, showarrow=FALSE ) %>%
layout(yaxis = list(title = list(text = "Bar Size", standoff = 30L)),
xaxis = list(title = list(text = "Bar Size",standoff = 30L)),
legend = list(orientation = "v", x = 1.1, y = 0.13))
如果您愿意考虑使用,这里是一种选择基于按钮点击显示哪个图的方法。 视觉的
代码库(闪亮)
图书馆(GG2)
图书馆(绘本)
图书馆(供猫用)
#加载数据
如果你想创建一个静态html文件,你可以使用一些定制的js和html来做你想做的事情。
为此,您首先需要一个小助手函数,您可以将其添加到标记文件中:
<script type="text/javascript">
<!--
function showSolution(){
first=document.getElementById('first')
second=document.getElementById('second')
if(first.style.visibility=='visible'){
first.style.visibility='hidden';
first.style.display='none';
second.style.visibility="visible";
second.style.display='block';
}else{
first.style.visibility="visible";
first.style.display='block';
second.style.visibility='hidden';
second.style.display='none';
}
}
-->
然后,您需要一个使用helper函数的按钮:
<input type='button' value='Change plot' onclick='showSolution();'/>
对于芬兰语,您只需将图形创建块包装到一些div标记中:
<div id='first' style='visibility:visible;display:block'>
```{r}
labels1 <- factor(c("0", "1-3", "3-5", "5-7", "7-9",
"9-11", "11-15", "15-20","20-90"), levels =
c("0", "1-3", "3-5", "5-7", "7-9",
"9-11", "11-15", "15-20","20-30","30-90"))
values1 <- c("white", "#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb",
"#41b6c4", "#1d91c0", "#225ea8", "#253494","#081d58")
bar_list = c("No. 5", "No. 6", "No. 8", "No. 10", "No. 11", "No. 14", "No. 18")
plot1 <- ggplot(coupler.graph) + aes(x = Category, y = fct_inorder(`Bar Size`), fill = factor(x,
levels = c("0", "1-3", "3-5", "5-7", "7-9",
"9-11", "11-15", "15-20","20-30", "30-90"))) +
geom_tile(width=0.9, height=0.9) + theme_classic() + scale_fill_manual(labels = factor(labels1), values = values1) +
labs(x = "Splicer Type", y = "Bar Size") + scale_y_discrete(limits = bar_list) +
theme(plot.title = element_blank(), axis.text = element_text(color = "black", size = 12), axis.ticks.x = element_blank(),
axis.line = element_line(color = "black", size = 0.2), axis.ticks.y = element_line(color = "black", size = 0.2),
axis.title.y = element_text(color = "black", size = 16, margin = margin(0,40,0,0)),
axis.title.x = element_text(color = "black", size = 16, margin = margin(35,0,0,0)),
legend.title = element_blank(), legend.text = element_text(color = "black", size = 12))
ggplotly(
p = ggplot2::last_plot(),
width = NULL,
height = NULL,
tooltip = c("Category", "Failure"),
dynamicTicks = FALSE,
layerData = 1,
originalData = TRUE,) %>% add_annotations( text="Number of\nSpecimens", xref="paper", yref="paper",
x=1.1, xanchor="left", y=0.8, yanchor="bottom", font = list(size = 18),
legendtitle=TRUE, showarrow=FALSE ) %>%
layout(yaxis = list(title = list(text = "Bar Size", standoff = 30L)),
xaxis = list(title = list(text = "Bar Size",standoff = 30L)),
legend = list(orientation = "v", x = 1.1, y = 0.13))
```
</div>
<div id='second' style='visibility:hidden;display:none'>
```{r}
values2 <- c("Bar fracture" = "red", "Bar pullout" = "blue", "Coupler failure" = "yellow")
plot2 <- ggplot(coupler.graph) + aes(x = Category, y = fct_inorder(`Bar Size`), fill = Failure) +
geom_tile(width=0.9, height=0.9) + theme_classic() + scale_fill_manual(values = values2) +
labs(x = "Splicer Type", y = "Bar Size") + scale_y_discrete(limits = bar_list) +
theme(plot.title = element_blank(), axis.text = element_text(color = "black", size = 12), axis.ticks.x = element_blank(),
axis.line = element_line(color = "black", size = 0.2), axis.ticks.y = element_line(color = "black", size = 0.2),
axis.title.y = element_text(color = "black", size = 16, margin = margin(0,40,0,0)),
axis.title.x = element_text(color = "black", size = 16, margin = margin(35,0,0,0)),
legend.title = element_blank(), legend.text = element_text(color = "black", size = 12))
ggplotly(
p = ggplot2::last_plot(),
width = NULL,
height = NULL,
tooltip = c("Category", "Failure"),
dynamicTicks = FALSE,
layerData = 1,
originalData = TRUE,) %>%
layout(yaxis = list(title = list(text = "Bar Size", standoff = 30L)),
xaxis = list(title = list(text = "Bar Size",standoff = 30L)),
legend = list(orientation = "v", x = 1.1, y = 0.13))
```
</div>
```{r}
标签1
<script type="text/javascript">
<!--
function showSolution(){
first=document.getElementById('first')
second=document.getElementById('second')
if(first.style.visibility=='visible'){
first.style.visibility='hidden';
first.style.display='none';
second.style.visibility="visible";
second.style.display='block';
}else{
first.style.visibility="visible";
first.style.display='block';
second.style.visibility='hidden';
second.style.display='none';
}
}
-->
<input type='button' value='Change plot' onclick='showSolution();'/>
<div id='first' style='visibility:visible;display:block'>
```{r}
labels1 <- factor(c("0", "1-3", "3-5", "5-7", "7-9",
"9-11", "11-15", "15-20","20-90"), levels =
c("0", "1-3", "3-5", "5-7", "7-9",
"9-11", "11-15", "15-20","20-30","30-90"))
values1 <- c("white", "#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb",
"#41b6c4", "#1d91c0", "#225ea8", "#253494","#081d58")
bar_list = c("No. 5", "No. 6", "No. 8", "No. 10", "No. 11", "No. 14", "No. 18")
plot1 <- ggplot(coupler.graph) + aes(x = Category, y = fct_inorder(`Bar Size`), fill = factor(x,
levels = c("0", "1-3", "3-5", "5-7", "7-9",
"9-11", "11-15", "15-20","20-30", "30-90"))) +
geom_tile(width=0.9, height=0.9) + theme_classic() + scale_fill_manual(labels = factor(labels1), values = values1) +
labs(x = "Splicer Type", y = "Bar Size") + scale_y_discrete(limits = bar_list) +
theme(plot.title = element_blank(), axis.text = element_text(color = "black", size = 12), axis.ticks.x = element_blank(),
axis.line = element_line(color = "black", size = 0.2), axis.ticks.y = element_line(color = "black", size = 0.2),
axis.title.y = element_text(color = "black", size = 16, margin = margin(0,40,0,0)),
axis.title.x = element_text(color = "black", size = 16, margin = margin(35,0,0,0)),
legend.title = element_blank(), legend.text = element_text(color = "black", size = 12))
ggplotly(
p = ggplot2::last_plot(),
width = NULL,
height = NULL,
tooltip = c("Category", "Failure"),
dynamicTicks = FALSE,
layerData = 1,
originalData = TRUE,) %>% add_annotations( text="Number of\nSpecimens", xref="paper", yref="paper",
x=1.1, xanchor="left", y=0.8, yanchor="bottom", font = list(size = 18),
legendtitle=TRUE, showarrow=FALSE ) %>%
layout(yaxis = list(title = list(text = "Bar Size", standoff = 30L)),
xaxis = list(title = list(text = "Bar Size",standoff = 30L)),
legend = list(orientation = "v", x = 1.1, y = 0.13))
```
</div>
<div id='second' style='visibility:hidden;display:none'>
```{r}
values2 <- c("Bar fracture" = "red", "Bar pullout" = "blue", "Coupler failure" = "yellow")
plot2 <- ggplot(coupler.graph) + aes(x = Category, y = fct_inorder(`Bar Size`), fill = Failure) +
geom_tile(width=0.9, height=0.9) + theme_classic() + scale_fill_manual(values = values2) +
labs(x = "Splicer Type", y = "Bar Size") + scale_y_discrete(limits = bar_list) +
theme(plot.title = element_blank(), axis.text = element_text(color = "black", size = 12), axis.ticks.x = element_blank(),
axis.line = element_line(color = "black", size = 0.2), axis.ticks.y = element_line(color = "black", size = 0.2),
axis.title.y = element_text(color = "black", size = 16, margin = margin(0,40,0,0)),
axis.title.x = element_text(color = "black", size = 16, margin = margin(35,0,0,0)),
legend.title = element_blank(), legend.text = element_text(color = "black", size = 12))
ggplotly(
p = ggplot2::last_plot(),
width = NULL,
height = NULL,
tooltip = c("Category", "Failure"),
dynamicTicks = FALSE,
layerData = 1,
originalData = TRUE,) %>%
layout(yaxis = list(title = list(text = "Bar Size", standoff = 30L)),
xaxis = list(title = list(text = "Bar Size",standoff = 30L)),
legend = list(orientation = "v", x = 1.1, y = 0.13))
```
</div>