通过添加新行来编辑 plotly hovertemplate
Edit the plotly hovertemplate by adding a new row
我有下面的 data.frame
并且我创建了一个分组条形图。我想通过在 Department
之后添加一个新行来编辑悬停文本,该行将被命名为 Department value
并将列 DemandCourse.x
作为组 Demand
的值,并且AmountsAv.x
组 Amount Available
。
dp <- structure(list(`Element Name` = c("Naphthalene", "Nitric acid (concentrated)",
"Sulphuric acid(concentrated)", "2-hydroxybenzoic acid", "Acetic anhydride",
"2-Naphthol", "Sodium Hydroxide", "Phenyl hydrazine hydrochloride",
"Glucose", "Sodium acetate", "Aniline", "Zinc poweder", "2-amino-benzoic acid",
"1.3-dihydroxybenzene", "Ethyl acetate", "hydroxy benzene", "phenyl methanol",
"Sodium carbonate", "Potassium permanganate", "Sodium bisulfite.",
"Hydrochloric acid (concentrated)", "Sodium nitrite", "Copper(II) sulfate",
"Sodium chloride.", "Methyl orange", "EtOH", "Distilled water",
"cuper ion", "ammonium hydroxide", "ammonium hydroxide", "Iron( III)",
"Nitric Acid", "Potassium Thiocyanate", "ferric ammonium sulfate",
"Ammonium Sulfate", "Sodium hydroxide", "sodium hypochlorite",
"Hydrochloric acid", "Acetic acid", "Phenolphthalein", "Sodium carbonate",
"Sodium Acetate", "Sodum hydroxide", "Acetic acid", "Hydrochloric acid",
"Phenolphthalein", "Methyl orange", "Phosphoric acid", "Amonium hydroxide",
"Sodium carbonate"), Department = c("Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry","Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry"), DemandCourse.x = c(240,
375, 1050, 300, 1614, 225, 75, 414, 414, 225, 450, 111, 675,
105, 120, 375, 75, 75, 375, 150, 750, 264, 975, 900, 20, 250,
30, 25, 2500, 2500, 15, 500, 730, 25, 170, 240, 75, 750, 255,
10, 160, 50, 144, 54, 630, 15, 18, 132, 900, 48), DemandCourse.y = c(1115,
375, 1050, 300, 1739, 225, 800, 414, 414, 225, 450, 111, 675,
105, 224.5, 375, 75, 613, 601, 150, 1070, 364, 1519, 1095, 96.75,
250, 293, 25, 29500, 29500, 15, 500, 730, 25, 170, 240, 75, 1420,
534, 63, 613, 50, 144, 534, 1420, 63, 96.75, 152, 900, 613),
AmountsAv.x = c(NA, 1000, 3000, 4000, 1000, 750, 750, 2000,
5000, 150, 24000, 450, 3000, 1400, 400, 400, 250, 250, 1000,
1000, 7500, 6400, 900, NA, 250, 1500, 20000, 50, 300, 4000,
200, NA, 3000, 500, 1200, NA, 1000, NA, 6000, 900, 250, NA,
200, 6000, NA, 900, 250, 200, NA, 250), AmountsAv.y = c(0,
1000, 3000, 4000, 2000, 750, 4500, 2000, 5000, 150, 24000,
450, 3000, 1400, 1200, 400, 250, 1500, 5000, 1000, 22500,
12800, 2700, 0, 1500, 1500, 80000, 50, 8600, 8600, 200, 0,
3000, 500, 1200, 0, 1000, 0, 30000, 4500, 1500, 0, 200, 30000,
0, 4500, 1500, 400, 0, 1500)), row.names = c(NA, -50L), class = c("tbl_df",
"tbl", "data.frame"), na.action = structure(293:294, .Names = c("293",
"294"), class = "omit"))
fig <- plot_ly(x = ~`Element Name`,text=~Department, data = merged3) %>%
add_bars(y = ~`DemandCourse.y`,
name = "Demand",
textposition = "none", # <--- added here
hovertemplate = paste0("Chemical Name: %{x}<br>",
"Total Demand: %{y}<br>",
"Department: %{text}<br><extra></extra>")) %>%
add_bars(y = ~`AmountsAv.y`,
name = "Amount Available",
textposition = "none", # <--- added here
hovertemplate = paste0("Chemical Name: %{x}<br>",
"Total Amount: %{y}<br>",
"Department: %{text}<br><extra></extra>")) %>%
layout(barmode = "group", # <--- dropped showLegend (doesn't go here)
xaxis = list(title = "Element Name", tickangle=45),
yaxis = list(title = "Amount Available"),
title = "Amount and Demand per Element")
fig
编辑: 使用 hovertext
代替 text
和 textposition = "none"
(另见 )
library(plotly)
fig <- plot_ly(x = ~`Element Name`, data = dp) %>%
add_bars(y = ~`DemandCourse.y`,
name = "Demand",
hovertext = ~ paste0("Chemical Name: ", `Element Name`, "<br>",
"Total Demand: ", `DemandCourse.y`, "<br>",
"Department: " , Department, "<br>",
"Department value: " , DemandCourse.x),
hovertemplate = "%{hovertext}<extra></extra>") %>%
add_bars(y = ~`AmountsAv.y`,
name = "Amount Available",
hovertext = ~ paste0("Chemical Name: ", `Element Name`, "<br>",
"Total Amount: ", `AmountsAv.y`, "<br>",
"Department: " , Department, "<br>",
"Department value: " , AmountsAv.x),
hovertemplate = "%{hovertext}<extra></extra>") %>%
layout(barmode = "group",
xaxis = list(title = "Element Name", tickangle=45),
yaxis = list(title = "Amount Available"),
title = "Amount and Demand per Element")
fig
可以在text
参数中构造大部分hovertemplate
来解决这个问题:
dp <- structure(list(`Element Name` = c("Naphthalene", "Nitric acid
(concentrated)", "Sulphuric acid(concentrated)", "2-hydroxybenzoic acid",
"Acetic anhydride", "2-Naphthol", "Sodium Hydroxide", "Phenyl hydrazine
hydrochloride", "Glucose", "Sodium acetate", "Aniline", "Zinc poweder",
"2-amino-benzoic acid", "1.3-dihydroxybenzene", "Ethyl acetate", "hydroxy
benzene", "phenyl methanol", "Sodium carbonate", "Potassium permanganate",
"Sodium bisulfite.", "Hydrochloric acid (concentrated)", "Sodium nitrite",
"Copper(II) sulfate", "Sodium chloride.", "Methyl orange", "EtOH", "Distilled
water", "cuper ion", "ammonium hydroxide", "ammonium hydroxide", "Iron( III)",
"Nitric Acid", "Potassium Thiocyanate", "ferric ammonium sulfate", "Ammonium
Sulfate", "Sodium hydroxide", "sodium hypochlorite", "Hydrochloric acid",
"Acetic acid", "Phenolphthalein", "Sodium carbonate", "Sodium Acetate", "Sodum
hydroxide", "Acetic acid", "Hydrochloric acid", "Phenolphthalein", "Methyl
orange", "Phosphoric acid", "Amonium hydroxide", "Sodium carbonate"),
Department = c("Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry","Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry"), DemandCourse.x = c(240,
375, 1050, 300, 1614, 225, 75, 414, 414, 225, 450, 111, 675, 105, 120, 375,
75, 75, 375, 150, 750, 264, 975, 900, 20, 250, 30, 25, 2500, 2500, 15, 500,
730, 25, 170, 240, 75, 750, 255, 10, 160, 50, 144, 54, 630, 15, 18, 132, 900,
48), DemandCourse.y = c(1115, 375, 1050, 300, 1739, 225, 800, 414, 414, 225,
450, 111, 675, 105, 224.5, 375, 75, 613, 601, 150, 1070, 364, 1519, 1095,
96.75, 250, 293, 25, 29500, 29500, 15, 500, 730, 25, 170, 240, 75, 1420, 534,
63, 613, 50, 144, 534, 1420, 63, 96.75, 152, 900, 613), AmountsAv.x = c(NA,
1000, 3000, 4000, 1000, 750, 750, 2000, 5000, 150, 24000, 450, 3000, 1400,
400, 400, 250, 250, 1000, 1000, 7500, 6400, 900, NA, 250, 1500, 20000, 50,
300, 4000, 200, NA, 3000, 500, 1200, NA, 1000, NA, 6000, 900, 250, NA, 200,
6000, NA, 900, 250, 200, NA, 250), AmountsAv.y = c(0, 1000, 3000, 4000, 2000,
750, 4500, 2000, 5000, 150, 24000, 450, 3000, 1400, 1200, 400, 250, 1500,
5000, 1000, 22500, 12800, 2700, 0, 1500, 1500, 80000, 50, 8600, 8600, 200, 0,
3000, 500, 1200, 0, 1000, 0, 30000, 4500, 1500, 0, 200, 30000, 0, 4500, 1500,
400, 0, 1500)), row.names = c(NA, -50L), class = c("tbl_df", "tbl",
"data.frame"), na.action = structure(293:294, .Names = c("293", "294"), class
= "omit"))
library(plotly)
fig <- plot_ly(x = ~`Element Name`, data = dp) %>%
add_bars(y = ~`DemandCourse.y`,
name = "Demand",
textposition = "none",
text= ~ paste0("Chemical Name: ", `Element Name`, "<br>",
"Total Demand: ", `DemandCourse.y`, "<br>",
"Department: " , Department, "<br>",
"Department value: " , DemandCourse.x),
hovertemplate = "%{text}<extra></extra>") %>%
add_bars(y = ~`AmountsAv.y`,
name = "Amount Available",
textposition = "none",
text= ~ paste0("Chemical Name: ", `Element Name`, "<br>",
"Total Amount: ", `AmountsAv.y`, "<br>",
"Department: " , Department, "<br>",
"Department value: " , AmountsAv.x),
hovertemplate = "%{text}<extra></extra>") %>%
layout(barmode = "group",
xaxis = list(title = "Element Name", tickangle=45),
yaxis = list(title = "Amount Available"),
title = "Amount and Demand per Element")
fig
我有下面的 data.frame
并且我创建了一个分组条形图。我想通过在 Department
之后添加一个新行来编辑悬停文本,该行将被命名为 Department value
并将列 DemandCourse.x
作为组 Demand
的值,并且AmountsAv.x
组 Amount Available
。
dp <- structure(list(`Element Name` = c("Naphthalene", "Nitric acid (concentrated)",
"Sulphuric acid(concentrated)", "2-hydroxybenzoic acid", "Acetic anhydride",
"2-Naphthol", "Sodium Hydroxide", "Phenyl hydrazine hydrochloride",
"Glucose", "Sodium acetate", "Aniline", "Zinc poweder", "2-amino-benzoic acid",
"1.3-dihydroxybenzene", "Ethyl acetate", "hydroxy benzene", "phenyl methanol",
"Sodium carbonate", "Potassium permanganate", "Sodium bisulfite.",
"Hydrochloric acid (concentrated)", "Sodium nitrite", "Copper(II) sulfate",
"Sodium chloride.", "Methyl orange", "EtOH", "Distilled water",
"cuper ion", "ammonium hydroxide", "ammonium hydroxide", "Iron( III)",
"Nitric Acid", "Potassium Thiocyanate", "ferric ammonium sulfate",
"Ammonium Sulfate", "Sodium hydroxide", "sodium hypochlorite",
"Hydrochloric acid", "Acetic acid", "Phenolphthalein", "Sodium carbonate",
"Sodium Acetate", "Sodum hydroxide", "Acetic acid", "Hydrochloric acid",
"Phenolphthalein", "Methyl orange", "Phosphoric acid", "Amonium hydroxide",
"Sodium carbonate"), Department = c("Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry","Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry"), DemandCourse.x = c(240,
375, 1050, 300, 1614, 225, 75, 414, 414, 225, 450, 111, 675,
105, 120, 375, 75, 75, 375, 150, 750, 264, 975, 900, 20, 250,
30, 25, 2500, 2500, 15, 500, 730, 25, 170, 240, 75, 750, 255,
10, 160, 50, 144, 54, 630, 15, 18, 132, 900, 48), DemandCourse.y = c(1115,
375, 1050, 300, 1739, 225, 800, 414, 414, 225, 450, 111, 675,
105, 224.5, 375, 75, 613, 601, 150, 1070, 364, 1519, 1095, 96.75,
250, 293, 25, 29500, 29500, 15, 500, 730, 25, 170, 240, 75, 1420,
534, 63, 613, 50, 144, 534, 1420, 63, 96.75, 152, 900, 613),
AmountsAv.x = c(NA, 1000, 3000, 4000, 1000, 750, 750, 2000,
5000, 150, 24000, 450, 3000, 1400, 400, 400, 250, 250, 1000,
1000, 7500, 6400, 900, NA, 250, 1500, 20000, 50, 300, 4000,
200, NA, 3000, 500, 1200, NA, 1000, NA, 6000, 900, 250, NA,
200, 6000, NA, 900, 250, 200, NA, 250), AmountsAv.y = c(0,
1000, 3000, 4000, 2000, 750, 4500, 2000, 5000, 150, 24000,
450, 3000, 1400, 1200, 400, 250, 1500, 5000, 1000, 22500,
12800, 2700, 0, 1500, 1500, 80000, 50, 8600, 8600, 200, 0,
3000, 500, 1200, 0, 1000, 0, 30000, 4500, 1500, 0, 200, 30000,
0, 4500, 1500, 400, 0, 1500)), row.names = c(NA, -50L), class = c("tbl_df",
"tbl", "data.frame"), na.action = structure(293:294, .Names = c("293",
"294"), class = "omit"))
fig <- plot_ly(x = ~`Element Name`,text=~Department, data = merged3) %>%
add_bars(y = ~`DemandCourse.y`,
name = "Demand",
textposition = "none", # <--- added here
hovertemplate = paste0("Chemical Name: %{x}<br>",
"Total Demand: %{y}<br>",
"Department: %{text}<br><extra></extra>")) %>%
add_bars(y = ~`AmountsAv.y`,
name = "Amount Available",
textposition = "none", # <--- added here
hovertemplate = paste0("Chemical Name: %{x}<br>",
"Total Amount: %{y}<br>",
"Department: %{text}<br><extra></extra>")) %>%
layout(barmode = "group", # <--- dropped showLegend (doesn't go here)
xaxis = list(title = "Element Name", tickangle=45),
yaxis = list(title = "Amount Available"),
title = "Amount and Demand per Element")
fig
编辑: 使用 hovertext
代替 text
和 textposition = "none"
(另见
library(plotly)
fig <- plot_ly(x = ~`Element Name`, data = dp) %>%
add_bars(y = ~`DemandCourse.y`,
name = "Demand",
hovertext = ~ paste0("Chemical Name: ", `Element Name`, "<br>",
"Total Demand: ", `DemandCourse.y`, "<br>",
"Department: " , Department, "<br>",
"Department value: " , DemandCourse.x),
hovertemplate = "%{hovertext}<extra></extra>") %>%
add_bars(y = ~`AmountsAv.y`,
name = "Amount Available",
hovertext = ~ paste0("Chemical Name: ", `Element Name`, "<br>",
"Total Amount: ", `AmountsAv.y`, "<br>",
"Department: " , Department, "<br>",
"Department value: " , AmountsAv.x),
hovertemplate = "%{hovertext}<extra></extra>") %>%
layout(barmode = "group",
xaxis = list(title = "Element Name", tickangle=45),
yaxis = list(title = "Amount Available"),
title = "Amount and Demand per Element")
fig
可以在text
参数中构造大部分hovertemplate
来解决这个问题:
dp <- structure(list(`Element Name` = c("Naphthalene", "Nitric acid
(concentrated)", "Sulphuric acid(concentrated)", "2-hydroxybenzoic acid",
"Acetic anhydride", "2-Naphthol", "Sodium Hydroxide", "Phenyl hydrazine
hydrochloride", "Glucose", "Sodium acetate", "Aniline", "Zinc poweder",
"2-amino-benzoic acid", "1.3-dihydroxybenzene", "Ethyl acetate", "hydroxy
benzene", "phenyl methanol", "Sodium carbonate", "Potassium permanganate",
"Sodium bisulfite.", "Hydrochloric acid (concentrated)", "Sodium nitrite",
"Copper(II) sulfate", "Sodium chloride.", "Methyl orange", "EtOH", "Distilled
water", "cuper ion", "ammonium hydroxide", "ammonium hydroxide", "Iron( III)",
"Nitric Acid", "Potassium Thiocyanate", "ferric ammonium sulfate", "Ammonium
Sulfate", "Sodium hydroxide", "sodium hypochlorite", "Hydrochloric acid",
"Acetic acid", "Phenolphthalein", "Sodium carbonate", "Sodium Acetate", "Sodum
hydroxide", "Acetic acid", "Hydrochloric acid", "Phenolphthalein", "Methyl
orange", "Phosphoric acid", "Amonium hydroxide", "Sodium carbonate"),
Department = c("Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry","Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry",
"Chemsitry", "Chemsitry", "Chemsitry", "Chemsitry"), DemandCourse.x = c(240,
375, 1050, 300, 1614, 225, 75, 414, 414, 225, 450, 111, 675, 105, 120, 375,
75, 75, 375, 150, 750, 264, 975, 900, 20, 250, 30, 25, 2500, 2500, 15, 500,
730, 25, 170, 240, 75, 750, 255, 10, 160, 50, 144, 54, 630, 15, 18, 132, 900,
48), DemandCourse.y = c(1115, 375, 1050, 300, 1739, 225, 800, 414, 414, 225,
450, 111, 675, 105, 224.5, 375, 75, 613, 601, 150, 1070, 364, 1519, 1095,
96.75, 250, 293, 25, 29500, 29500, 15, 500, 730, 25, 170, 240, 75, 1420, 534,
63, 613, 50, 144, 534, 1420, 63, 96.75, 152, 900, 613), AmountsAv.x = c(NA,
1000, 3000, 4000, 1000, 750, 750, 2000, 5000, 150, 24000, 450, 3000, 1400,
400, 400, 250, 250, 1000, 1000, 7500, 6400, 900, NA, 250, 1500, 20000, 50,
300, 4000, 200, NA, 3000, 500, 1200, NA, 1000, NA, 6000, 900, 250, NA, 200,
6000, NA, 900, 250, 200, NA, 250), AmountsAv.y = c(0, 1000, 3000, 4000, 2000,
750, 4500, 2000, 5000, 150, 24000, 450, 3000, 1400, 1200, 400, 250, 1500,
5000, 1000, 22500, 12800, 2700, 0, 1500, 1500, 80000, 50, 8600, 8600, 200, 0,
3000, 500, 1200, 0, 1000, 0, 30000, 4500, 1500, 0, 200, 30000, 0, 4500, 1500,
400, 0, 1500)), row.names = c(NA, -50L), class = c("tbl_df", "tbl",
"data.frame"), na.action = structure(293:294, .Names = c("293", "294"), class
= "omit"))
library(plotly)
fig <- plot_ly(x = ~`Element Name`, data = dp) %>%
add_bars(y = ~`DemandCourse.y`,
name = "Demand",
textposition = "none",
text= ~ paste0("Chemical Name: ", `Element Name`, "<br>",
"Total Demand: ", `DemandCourse.y`, "<br>",
"Department: " , Department, "<br>",
"Department value: " , DemandCourse.x),
hovertemplate = "%{text}<extra></extra>") %>%
add_bars(y = ~`AmountsAv.y`,
name = "Amount Available",
textposition = "none",
text= ~ paste0("Chemical Name: ", `Element Name`, "<br>",
"Total Amount: ", `AmountsAv.y`, "<br>",
"Department: " , Department, "<br>",
"Department value: " , AmountsAv.x),
hovertemplate = "%{text}<extra></extra>") %>%
layout(barmode = "group",
xaxis = list(title = "Element Name", tickangle=45),
yaxis = list(title = "Amount Available"),
title = "Amount and Demand per Element")
fig