[英]Add a custom label and tick to categorical y-axis of tile-plot in ggplot2
I would like to add another row of empty tiles to my tile plot shown below for "No.14"
bars.我想在我的图块 plot 中添加另一行空图块,如下所示的
"No.14"
条。 There would be no data for that row, so just adding an empty row to the dataframe was not sufficient as it created an NA
item in the legend which I do not want.该行将没有数据,因此仅向 dataframe 添加一个空行是不够的,因为它在图例中创建了一个我不想要的
NA
项目。
Here is the data:这是数据:
> dput(coupler.graph)
structure(list(Category = c("HBC", "TC", "BSC", "GSC", "GSC",
"SSC", "SSC", "GSC", "GSC", "SSC", "SSC", "SSC", "HBC", "TC",
"BSC", "BSC", "GSC", "GSC", "SSC", "HBC", "HBC", "TC", "TC",
"BSC", "GSC", "GSC", "GSC", "GSC", "GSC", "TC", "BSC", "BSC",
"GSC", "GSC"), `Bar Size` = c("No. 5", "No. 5", "No. 5", "No. 5",
"No. 5", "No. 6", "No. 6", "No. 6", "No. 6", "No. 8", "No. 8",
"No. 8", "No. 8", "No. 8", "No. 8", "No. 8", "No. 8", "No. 8",
"No. 10", "No. 10", "No. 10", "No. 10", "No. 10", "No. 10", "No. 10",
"No. 10", "No. 10", "No. 11", "No. 11", "No. 18", "No. 18", "No. 18",
"No. 18", "No. 18"), `No. Bars` = c(3, 9, 3, 6, 6, 85, 85, 7,
7, 90, 90, 90, 7, 9, 6, 6, 21, 21, 9, 22, 22, 27, 27, 13, 25,
25, 25, 8, 8, 4, 4, 4, 4, 4), Failure = c("Bar fracture", "Bar fracture",
"Bar fracture", "Bar pullout", "Bar fracture", "Bar pullout",
"Bar fracture", "Coupler failure", "Bar fracture", "Coupler failure",
"Bar pullout", "Bar fracture", "Bar fracture", "Bar fracture",
"Bar pullout", "Bar fracture", "Bar fracture", "Bar pullout",
"Coupler failure", "Coupler failure", "Bar fracture", "Coupler failure",
"Bar fracture", "Bar fracture", "Bar pullout", "Bar fracture",
"Coupler failure", "Bar fracture", "Coupler failure", "Coupler failure",
"Bar fracture", "Bar pullout", "Bar fracture", "Coupler failure"
), x = c("1-3", "7-9", "1-3", "5-7", "5-7", "30-90", "30-90",
"5-7", "5-7", "30-90", "30-90", "30-90", "5-7", "7-9", "5-7",
"5-7", "20-30", "20-30", "7-9", "20-30", "20-30", "20-30", "20-30",
"11-15", "20-30", "20-30", "20-30", "7-9", "7-9", "3-5", "3-5",
"3-5", "3-5", "3-5")), row.names = c(NA, -34L), class = c("tbl_df",
"tbl", "data.frame"))
My code to create the interactive plot:我创建交互式 plot 的代码:
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") 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")标签1 <-因子(c(“0”,“1-3”,“3-5”,“5-7”,“7-9”,“9-11”,“11-15”,“15- 20","20-90"), 级别 = c("0", "1-3", "3-5", "5-7", "7-9", "9-11", "11 -15", "15-20","20-30","30-90")) 值1 <- c("white", "#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb ", "#41b6c4", "#1d91c0", "#225ea8", "#253494","#081d58") 标签1 <- 因子(c("0", "1-3", "3-5", “5-7”、“7-9”、“9-11”、“11-15”、“15-20”、“20-90”),级别 = c(“0”、“1-3” , "3-5", "5-7", "7-9", "9-11", "11-15", "15-20","20-30","30-90"))值1 <- c(“白色”,“#ffffd9”,“#edf8b1”,“#c7e9b4”,“#7fcdbb”,“#41b6c4”,“#1d91c0”,“#225ea8”,“#253494”, #081d58")
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") +
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.9, 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))
The resulting plot:生成的 plot:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.