我有两个数据集:data和data2。两者都有两列(一列有日期,另一列有值)。
数据集:
data <- structure(list(DATA = structure(c(19327, 19328, 19331, 19332,
19333, 19334, 19335, 19338, 19339, 19340, 19341, 19342, 19345,
19346, 19347, 19348, 19349), class = "Date"), AUM = c(32962594L,
33213220L, 33278745L, 33482196L, 33591402L, 33591402L, 33660796L,
33810382L, 34172853L, 34264748L, 34032274L, 34216610L, 34416588L,
34462226L, 35308681L, 35429483L, 35456650L)), row.names = c(NA,
-17L), class = "data.frame")
data2 <- structure(list(DATA = structure(c(19327, 19328, 19331, 19332,
19333, 19334, 19335, 19338, 19339, 19340, 19341, 19342, 19345,
19346, 19347, 19348, 19349), class = "Date"), CUM_SUM = c(0L,
173080L, 318158L, 504538L, 607304L, 607304L, 771404L, 916984L,
1153354L, 1292314L, 1381434L, 1708534L, 1937284L, 2035272L, 2817863L,
3046949L, 3046949L)), row.names = c(NA, -17L), class = "data.frame")
我希望显示一个图形,该图形不仅显示值的级数,而且对于每个点,还指示相对于第一个值的百分比变化。我还希望y_axis是点的值,而不是百分比变化。我现在的图形显示一个系列(数据)的百分比变化,但y_axis不是所需的格式。我希望看到的不是百分比变化,而是值。
这是我的图形代码:
highchart() %>%
hc_yAxis_multiples(list(title = list(text = "data"), opposite = FALSE),
list(showLastLabel = FALSE, opposite = TRUE, title = list(text = "data2"))) %>%
hc_add_series(name = "data", yAxis = 0, id = "data_line", data = data, hcaes(x = DATA, y = AUM), type = 'line', compare = 'percent') %>%
hc_add_series(name = 'data2', yAxis = 1, id = 'data2_line', data = data2, hcaes(x = DATA, y = CUM_SUM), type = 'line') %>%
hc_xAxis(type = "datetime") %>%
hc_plotOptions(column = list(dataLabels = list(enabled = F),enableMouseTracking = T)) %>%
hc_chart(zoomType = 'xy') %>%
hc_colors(c("#336600","#990000")) %>%
hc_tooltip(pointFormat = '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.change} %)<br/>',
split = TRUE, crosshairs = TRUE) %>%
hc_exporting(enabled = TRUE)
这是代码生成的图表:
如您所见,左侧y_axis的格式不是所需的格式。
1条答案
按热度按时间mwkjh3gx1#
更新:自定义格式值和拆分工具提示
在注解中,我写道您可以将JS中的
y
声明替换为y = Highcharts.numberFormat
ter
(this.y, 0, '.', ' ');
这里有几处错误。首先,它是
Highcharts.numberFormat
〈-(最后没有ter
)。很抱歉。如果是这样的话,我会添加另一个评论。然而,这导致了一些其他的问题,我没有考虑到这一点不太好的信息。所以为了纠正这一点,并解决您关于拆分工具提示的其他评论,我添加了以下信息。这是我最初提供的图,没有拆分工具提示,但带有 * 格式的值。我更改了3:
y
、delta
,以及如何在字符串tooltip
中调用y
。在
delta
中,我将y
更改为this.y
(紧跟在y = Highcharts...
后面的行是创建delta
的行)。在
tooltip
中,我从${y}
中删除了toFixed()
。拆分工具提示
如果按照JS操作,当工具提示没有拆分时,会看到返回了一个字符串,这个字符串是使用多个变量创建的,前面加了
this
。拆分工具提示时,每个绘制的轨迹都在
this.points
中有一个索引。此外,需要为拆分中的每个项返回一个字符串。在图形中,有1个x轴项和2个y轴项,因此需要返回3个字符串。如果您的数字格式选择与我指定的不一样,下面是参数:
最初提供:
当您将名为
data
的序列设置在左侧时,您告诉Highcharts制作y轴百分比。但是,即使您操纵这些轴以显示实际股票值,Highcharts仍将在x轴上绘制日期,在y轴上绘制百分比。%补偿值绘制线将与$y轴不匹配。
我试着想一种方法来更好地表达我的意思,以及为什么你不能做你正在尝试做的事情...我采取了股票价值,并创建了基于几个范围的模拟比较值(以模拟各种缩放设置和
compare
如何变化)。你会看到股票价格可能会上升,但这并不意味着
compare
的值也会上升,你还会看到这些值会根据你缩放的位置而变化,你必须无限地调整$轴的大小才能与%轴对齐。下面是制作情节的代码,我提到的情节概述了这个问题。
你可以用日期和 * 值 * 来表示比较值,也可以用 * 工具提示 * 或标签来表示比较值,或者用相反的y轴来表示数据和比较值,但是如果你这样做,
data2
就不适用了。为什么
data2
不能这样做呢?一张图片可以更快地回答这个问题:
如果有2个轴,则三个轴中的一个基本上是一条平线。
如果你有3个轴,你可能可以对齐他们最初...检查出来:
这里有一个随机缩放...看到的价值观不再对齐。
在这里可以看到,
compare
系列的绘图与值轴上的值不对齐。另一个想法
像前面的问答一样,我建议您使用工具提示来装饰和显示comp值,并绘制实际值。
这将使用您在图表中特别指定的数据和功能。但是,它会绘制值,隐藏
compare
线,并将复合线数据添加到值的工具提示中。对于
data2
,我使用了默认的工具提示。下面是绘制该图的代码。