Javascript 用Hichcharts绘制不同尺度的时间序列
我想用海图表示两个时间序列。我的问题是一个值大,另一个值低。当我将它们绘制在一起时,值较低的显示为一条直线。我希望能够用两种不同的比例绘制它们,但我发现这是不可能的。我把这里已经有的东西放在a上,代码如下:Javascript 用Hichcharts绘制不同尺度的时间序列,javascript,highcharts,Javascript,Highcharts,我想用海图表示两个时间序列。我的问题是一个值大,另一个值低。当我将它们绘制在一起时,值较低的显示为一条直线。我希望能够用两种不同的比例绘制它们,但我发现这是不可能的。我把这里已经有的东西放在a上,代码如下: $(function() { $('#container').highcharts('StockChart', { rangeSelector : { selected : 1, inputEnabled: $('#container').width() > 300,
$(function() {
$('#container').highcharts('StockChart', {
rangeSelector : {
selected : 1,
inputEnabled: $('#container').width() > 300,
enabled:1
},
chart:{type:'line'},
series: [
{name: 'serie with high values',
color: 'red',
data: [1000,2000,3000,4000]
},
{name: 'serie with low values',
color: 'green',
data: [0.1,0.2,0.3,0.4,0.5]
},
],
legend: {
enabled:true,
},
})
});
如果有人能告诉我如何给每个时间序列赋予不同的尺度,我将不胜感激——理想情况下,我会想绘制两个以上的时间序列,每个都有自己的刻度。由于高值和低值之间的差异非常大,因此图表看起来是这样的,但是如果您尝试使用以下值,您将看到图表看起来很好
$(function() {
$('#container').highcharts('StockChart', {
rangeSelector : {
selected : 1,
inputEnabled: $('#container').width() > 300,
enabled:1
},
chart:{type:'line'},
series: [
{name: 'serie with high values',
color: 'red',
data: [10,15,30,40]
},
{name: 'serie with low values',
color: 'green',
data: [0.1,1,5,10]
}],
legend: {
enabled:true
}
})
});
您可以使用yAxis,如示例中所示
yAxis:[{
},{
opposite:true
}],
我想这正是你想要的。既然你有一个答案告诉你如何具体完成你的要求,让我添加一个更基本的答案 这是一个典型的例子,说明您真正需要的是两个单独的图表(通常,一个垂直对齐,另一个垂直对齐,最适合于折线图,它们可以与公共时间轴一起工作) 这一概念似乎让一些人感到震惊,但它确实是最好的解决方案,拥有两张图表而不是一张图表确实没有负面影响 在一张图表上用两种不同的比例绘制两个系列的问题在于,它实际上迫使用户进行不真实的比较。当您在图表上绘制两条线时,这两条线之间的相互作用通常是很重要的,并且会被查看者看到 当这两条线有两个不同的刻度时,交互作用完全没有意义,这两条线只会使图表变得混乱,模糊数据的信息 基本上,当你用2个不同的比例绘制2个系列时,你已经绘制了2个图表了——但你把它们挤到了一个空间里,它们以相互阻碍的方式相互作用 FWIW {{更新: 作为一个例子,这里有一个相当典型的例子,在同一张
图表上以不同的比例绘制2个系列:
它可以被清理和改进一点,但总的来说,不管你对它做什么,它都会有点混乱
以下是在两个单独图表上绘制的相同数据,其空间明显小于原始的:
我觉得很难支持第一个例子使比较两个系列中的变化更容易的论点。看看@marco——这应该是一个答案,因为使用多个yAxis将允许有不同的尺度。这是真的,但我希望能够将高值和低值绘制在一起,并看到它们的变化,如@marco的链接。如果您缩小S4M提供的链接范围,让我尝试一下,如果我能为您做些什么的话,那也像您的图表$(函数(){$('#容器')。highcharts({chart:{type:'line',图例:{enabled:true},系列:[{名称:'海平面压力',颜色:'#AA4643',数据:[1016150025055040006000]},{名称:'温度',颜色:'#89A54E',数据:[.2、.5、.9、50100]}];);是的,添加yAxis并为每个系列指定与它相关的轴。谢谢!事实上,行反面:true
不需要有单独的刻度,尽管它使读取稍微不那么凌乱。好吧,我认为有两个原因需要在同一图表上绘制多个系列的不同刻度:1)它保存s places,2)它使比较变化更容易。YMMV。通过混淆数据来节省空间是一个糟糕的交易。更好的图表设计通常会允许多个图表与以前的图表相匹配。当两个图表相互重叠,并且每个图表的格式都需要如何匹配时,比较变化也同样容易,如果不是更容易的话特定的数据系列。查看两个正确设置的直线图并不比查看一个图上的两条直线困难。而且,如果这些直线在一个图上相互作用(这对于两个标度来说毫无意义),事实上,更难准确地比较这两条曲线。