Highchart:我可以使用不同的变量作为数据标签吗?
Highchart: Can I use a different variable as the data labels?
我正在尝试通过 r studio 中的 highchart 构建柱形图。我已将值转换为 %,因为我希望图表显示 %,但我希望数据标签显示值,有没有办法做到这一点?
我的数据集有一列包含伦敦的值和伦敦的百分比,我希望图表的 Y 轴显示百分比,而数据标签显示值。
这是我当前的代码:
hc <- highchart() %>%
hc_title(text= "Gender - London")%>%
hc_colors('#71599b') %>%
hc_yAxis(max = 0.7) %>%
hc_xAxis(categories = Sex$Gender) %>%
hc_add_series(name = "London", type = "column",
data = Sex$LON_PERC, dataLabels = list(enabled=TRUE, format={Sex$London}) )
所以,我将 Sex$LON_PERC(伦敦的 %)作为要绘制的数据,而 Sex$London 是数据标签。
但是这段代码将伦敦的所有值都放在了每个数据标签中。
编辑:
这是我要绘制的数据,LON_PERC 在 Y 轴上,性别在 X 轴上,伦敦作为数据标签
Gender London LON_PERC
Declined 5 0.000351247
Female 8230 0.578152441
Male 4640 0.325957148
No Data 1360 0.095539164
我不太喜欢使用“highcharter”包,因为它需要商业许可证,而我没有。
您可以使用 base r
或 ggplot
功能通过以下(相当简单)代码实现您想要的结果,这两种代码都是免费软件。我将在下面用两个代码片段来展示这一点。
### your data
Sex <- read.table(header = TRUE, text =
"Gender London LON_PERC
Declined 5 0.000351247
Female 8230 0.578152441
Male 4640 0.325957148
'No Data' 1360 0.095539164
")
使用碱基 r 的解决方案
barplot
函数 returns 一个矢量(当 besides
为假时),其坐标为绘制的所有柱状图的中点(如果 besides
为真,它是一个矩阵)。这为我们提供了 X-coordinates 用于在条形图上方设置文本,bar-heights 我们已经在我们绘制的数据中,对。
# Draw the barplot and store result in `mp`
mp <- barplot(Sex$LON_PERC, # height of the bar
names.arg = Sex$Gender, # x-axis labels
ylim = c(0, 0.7), # limits of y-axis
col = '#71599b', # your color
main = "Gender - London") # main title
# add text to the barplot using the stored values
text(x = mp, # middle of the bars
y = Sex$LON_PERC, # height of the bars
labels = Sex$London, # text to display
adj = c(.5, -1.5)) # adjust horizontally and vertically
这会产生以下图:
基于ggplot的解决方案
library(ggplot2)
ggplot(aes(x = Gender, y = LON_PERC), data = Sex) +
geom_bar(stat = "identity", width = .60, fill = "#71599b" ) +
geom_text(aes(label = London),
position = position_dodge(width = .9),
vjust = -.3, size = 3, hjust = "center") +
theme_minimal() +
scale_y_continuous(limits = c(0, 0.7),
breaks = seq(0.0, 0.7, by = 0.1),
minor_breaks = NULL) +
labs(title = "Gender - London") +
theme(axis.title.y = element_blank(), axis.title.x = element_blank())
产生以下情节:
在这两种情况下,很多特性可能适合您needs/wishes。
我希望你能从这些例子中受益,即使它不是用 highcharter 制作的。
我找到了解决方法。
所以,我可以添加一个 "tooltip",当我将鼠标悬停在 column/bar 上时会出现 "tooltip"。
首先需要一个函数:
myhc_add_series_labels_values <- function (hc, labels, values, text, colors= NULL, ...)
{
assertthat::assert_that(is.highchart(hc), is.numeric(values),
length(labels) == length(values))
df <- dplyr::data_frame(name = labels, y = values, text=text)
if (!is.null(colors)) {
assert_that(length(labels) == length(colors))
df <- mutate(df, color = colors)
}
ds <- list_parse(df)
hc <- hc %>% hc_add_series(data = ds, ...)
hc
}
然后在创建高图时需要调用此函数。
数据如下:
Sex <- read.table(header = TRUE, text =
"Gender London LON_PERC
Declined 5 0.000351247
Female 8230 0.578152441
Male 4640 0.325957148
'No Data' 1360 0.095539164
")
那么生成highchart的代码是:
Gender<- highchart() %>%
hc_xAxis(categories = Sex$Gender, labels=list(rotation=0))%>%
myhc_add_series_labels_values(labels = Sex$Gender,values=Sex$LON_PERC, text=Sex$London, type="column")%>%
hc_tooltip(crosshairs=TRUE, borderWidth=5, sort=TRUE, shared=TRUE, table=TRUE,pointFormat=paste('<br>%: {point.y}%<br>#: {point.text}'))%>%
hc_legend()
这给出了以下输出:
然后当我将鼠标悬停在每个 column/bar 上时,它会给出百分比信息和数字信息,如下所示:
我正在尝试通过 r studio 中的 highchart 构建柱形图。我已将值转换为 %,因为我希望图表显示 %,但我希望数据标签显示值,有没有办法做到这一点?
我的数据集有一列包含伦敦的值和伦敦的百分比,我希望图表的 Y 轴显示百分比,而数据标签显示值。
这是我当前的代码:
hc <- highchart() %>%
hc_title(text= "Gender - London")%>%
hc_colors('#71599b') %>%
hc_yAxis(max = 0.7) %>%
hc_xAxis(categories = Sex$Gender) %>%
hc_add_series(name = "London", type = "column",
data = Sex$LON_PERC, dataLabels = list(enabled=TRUE, format={Sex$London}) )
所以,我将 Sex$LON_PERC(伦敦的 %)作为要绘制的数据,而 Sex$London 是数据标签。
但是这段代码将伦敦的所有值都放在了每个数据标签中。
编辑:
这是我要绘制的数据,LON_PERC 在 Y 轴上,性别在 X 轴上,伦敦作为数据标签
Gender London LON_PERC
Declined 5 0.000351247
Female 8230 0.578152441
Male 4640 0.325957148
No Data 1360 0.095539164
我不太喜欢使用“highcharter”包,因为它需要商业许可证,而我没有。
您可以使用 base r
或 ggplot
功能通过以下(相当简单)代码实现您想要的结果,这两种代码都是免费软件。我将在下面用两个代码片段来展示这一点。
### your data
Sex <- read.table(header = TRUE, text =
"Gender London LON_PERC
Declined 5 0.000351247
Female 8230 0.578152441
Male 4640 0.325957148
'No Data' 1360 0.095539164
")
使用碱基 r 的解决方案
barplot
函数 returns 一个矢量(当 besides
为假时),其坐标为绘制的所有柱状图的中点(如果 besides
为真,它是一个矩阵)。这为我们提供了 X-coordinates 用于在条形图上方设置文本,bar-heights 我们已经在我们绘制的数据中,对。
# Draw the barplot and store result in `mp`
mp <- barplot(Sex$LON_PERC, # height of the bar
names.arg = Sex$Gender, # x-axis labels
ylim = c(0, 0.7), # limits of y-axis
col = '#71599b', # your color
main = "Gender - London") # main title
# add text to the barplot using the stored values
text(x = mp, # middle of the bars
y = Sex$LON_PERC, # height of the bars
labels = Sex$London, # text to display
adj = c(.5, -1.5)) # adjust horizontally and vertically
这会产生以下图:
基于ggplot的解决方案
library(ggplot2)
ggplot(aes(x = Gender, y = LON_PERC), data = Sex) +
geom_bar(stat = "identity", width = .60, fill = "#71599b" ) +
geom_text(aes(label = London),
position = position_dodge(width = .9),
vjust = -.3, size = 3, hjust = "center") +
theme_minimal() +
scale_y_continuous(limits = c(0, 0.7),
breaks = seq(0.0, 0.7, by = 0.1),
minor_breaks = NULL) +
labs(title = "Gender - London") +
theme(axis.title.y = element_blank(), axis.title.x = element_blank())
产生以下情节:
在这两种情况下,很多特性可能适合您needs/wishes。
我希望你能从这些例子中受益,即使它不是用 highcharter 制作的。
我找到了解决方法。
所以,我可以添加一个 "tooltip",当我将鼠标悬停在 column/bar 上时会出现 "tooltip"。
首先需要一个函数:
myhc_add_series_labels_values <- function (hc, labels, values, text, colors= NULL, ...)
{
assertthat::assert_that(is.highchart(hc), is.numeric(values),
length(labels) == length(values))
df <- dplyr::data_frame(name = labels, y = values, text=text)
if (!is.null(colors)) {
assert_that(length(labels) == length(colors))
df <- mutate(df, color = colors)
}
ds <- list_parse(df)
hc <- hc %>% hc_add_series(data = ds, ...)
hc
}
然后在创建高图时需要调用此函数。
数据如下:
Sex <- read.table(header = TRUE, text =
"Gender London LON_PERC
Declined 5 0.000351247
Female 8230 0.578152441
Male 4640 0.325957148
'No Data' 1360 0.095539164
")
那么生成highchart的代码是:
Gender<- highchart() %>%
hc_xAxis(categories = Sex$Gender, labels=list(rotation=0))%>%
myhc_add_series_labels_values(labels = Sex$Gender,values=Sex$LON_PERC, text=Sex$London, type="column")%>%
hc_tooltip(crosshairs=TRUE, borderWidth=5, sort=TRUE, shared=TRUE, table=TRUE,pointFormat=paste('<br>%: {point.y}%<br>#: {point.text}'))%>%
hc_legend()
这给出了以下输出:
然后当我将鼠标悬停在每个 column/bar 上时,它会给出百分比信息和数字信息,如下所示: