如何使用highcharts/d3.js或任何其他图表库绘制直线加条形图?
如何使用highcharts/d3.js或任何其他图表库绘制下面的直线加条形图如何使用highcharts/d3.js或任何其他图表库绘制直线加条形图?,d3.js,highcharts,nvd3.js,D3.js,Highcharts,Nvd3.js,如何使用highcharts/d3.js或任何其他图表库绘制下面的直线加条形图 因此,我正试图实现的是“如果特定时间间隔没有可用数据,则显示栏”(这里的图表表示时间间隔(17:30-18:30)没有可用数据)。您可以使用Highcharts/Highstock进行此操作。您可以将行和列系列放在一个图表中,并根据自己的喜好对它们进行操作 <script src="https://code.highcharts.com/stock/highstock.js"></script>
因此,我正试图实现的是“如果特定时间间隔没有可用数据,则显示栏”(这里的图表表示时间间隔(17:30-18:30)没有可用数据)。您可以使用Highcharts/Highstock进行此操作。您可以将行和列系列放在一个图表中,并根据自己的喜好对它们进行操作
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<div id="container" style="height: 400px; min-width: 600px"></div>
及
var数据=[];
for(设i=0;i<100;i++){
如果(i==10 | i==11 | i==12 | i==13 | i==14 | i==15 | i==16 | i==17 | i==18 | i==27 | i==28 | i==29){
data.push(空)
}否则{
数据推送([i,数学地板((数学随机()*100)+1)])
}
}
Highcharts.stockChart(‘容器’{
xAxis:{
序数:假,
标签:{
格式:“{value}”
}
},
系列:[{
数据:数据,
connectNulls:false,
数据分组:{
已启用:false
}
}, {
键入:“列”,
点宽度:9,
数据分组:{
已启用:false
},
数据:[
[10, 100],
[11, 100],
[12, 100],
[13, 100],
[14, 100],
[15, 100],
[16, 100],
[17, 100],
[18, 100],
[27, 100],
[28, 100],
[29, 100]
]
}]
});
查看此在线演示:您可以使用Highcharts/Highstock进行此操作。您可以将行和列系列放在一个图表中,并根据自己的喜好对它们进行操作
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<div id="container" style="height: 400px; min-width: 600px"></div>
及
var数据=[];
for(设i=0;i<100;i++){
如果(i==10 | i==11 | i==12 | i==13 | i==14 | i==15 | i==16 | i==17 | i==18 | i==27 | i==28 | i==29){
data.push(空)
}否则{
数据推送([i,数学地板((数学随机()*100)+1)])
}
}
Highcharts.stockChart(‘容器’{
xAxis:{
序数:假,
标签:{
格式:“{value}”
}
},
系列:[{
数据:数据,
connectNulls:false,
数据分组:{
已启用:false
}
}, {
键入:“列”,
点宽度:9,
数据分组:{
已启用:false
},
数据:[
[10, 100],
[11, 100],
[12, 100],
[13, 100],
[14, 100],
[15, 100],
[16, 100],
[17, 100],
[18, 100],
[27, 100],
[28, 100],
[29, 100]
]
}]
});
请参阅此在线演示:您还可以使用Highcharts和
绘图带功能(应该更具弹性)。在chart.events.load
上实现了一种算法,该算法检查null
是否在data
中,并根据当前数据动态地将绘图条带添加到图表中。请看下面的代码:
load() {
var axis = this.xAxis[0]
var boundaries = []
var color = '#55f'
// Check there are nulls in data. If yes, save the boundaries.
data.forEach((elem, i) => {
if (elem === null) {
if (data[i-1]) { boundaries.push(data[i-1][0]) }
if (data[i+1]) { boundaries.push(data[i+1][0]) }
}
})
// Create plotBands basing on current boundaries.
boundaries.forEach((range, i) => {
if (i % 2) {
axis.addPlotBand({
from: boundaries[i-1],
to: range,
color: color
})
}
})
}
此外,您还可以向图表中添加另一个系列(假系列,数据为空),这将用于切换绘图条带的可见性。代码如下:
{
// Fake series to add toggling visibility of plotbands functionality.
name: "Zone of Unavailability",
data: [],
events: {
legendItemClick() {
var bandsGroup = this.chart.xAxis[0].plotLinesAndBandsGroups['bands-0']
var bandsVisibility = bandsGroup.attr('opacity')
bandsGroup.attr({
opacity: bandsVisibility ? 0 : 1
})
}
}
}
现场示例:
API参考:
您还可以使用具有绘图带功能的Highcharts(应更具弹性)。在chart.events.load
上实现了一种算法,该算法检查null
是否在data
中,并根据当前数据动态地将绘图条带添加到图表中。请看下面的代码:
load() {
var axis = this.xAxis[0]
var boundaries = []
var color = '#55f'
// Check there are nulls in data. If yes, save the boundaries.
data.forEach((elem, i) => {
if (elem === null) {
if (data[i-1]) { boundaries.push(data[i-1][0]) }
if (data[i+1]) { boundaries.push(data[i+1][0]) }
}
})
// Create plotBands basing on current boundaries.
boundaries.forEach((range, i) => {
if (i % 2) {
axis.addPlotBand({
from: boundaries[i-1],
to: range,
color: color
})
}
})
}
此外,您还可以向图表中添加另一个系列(假系列,数据为空),这将用于切换绘图条带的可见性。代码如下:
{
// Fake series to add toggling visibility of plotbands functionality.
name: "Zone of Unavailability",
data: [],
events: {
legendItemClick() {
var bandsGroup = this.chart.xAxis[0].plotLinesAndBandsGroups['bands-0']
var bandsVisibility = bandsGroup.attr('opacity')
bandsGroup.attr({
opacity: bandsVisibility ? 0 : 1
})
}
}
}
现场示例:
API参考:
您如何检测是否存在数据点?@rioV8:要么我们不会发送该特定时间间隔的数据,要么让我们为该时间间隔输入json所说的内容type:bar。所以简单的问题是:*在同一个图表中显示某个时间间隔的行和某个时间间隔的显示栏。““您如何检测是否存在数据点?”@rioV8:要么我们不会发送该特定时间间隔的数据,要么让我们为该时间间隔输入json所说的:bar。所以简单的问题是:*在同一个图表中显示某个时间间隔的行和某个时间间隔的显示栏。“”