Hi Ich versuche, mehrere Highcharts-Graphen verschiedener Typen auf einer Seite anzuzeigen, Allerdings kann ich nur einen Graphen gleichzeitig anzeigen lassen.So zeigen Sie mehrere Highcharts-Graphen auf einer Seite an
Hier ist mein Code Kreisdiagramm zeigen:
$ ->
# Note: scheme_distribution is like [['Gold': 50],['Equity': 5],['Debt': 45]]
scheme_distribution = $("#scheme_distribution_chart").data('distribution')
###
# Create the chart when all data is loaded
# @returns {undefined}
###
$ ->
chart = new (Highcharts.Chart)({
chart:
renderTo: 'scheme_distribution_chart'
type: 'pie'
plotOptions:
pie:
innerSize: '60%'
dataLabels:
enabled: false
tooltip:
headerFormat: '<span style="color:{point.color}">\u25CF</span><small> {point.key}</small>: ',
pointFormat:'<b>{point.y}%</b><br/>'
series: [ { data: scheme_distribution } ]
title:
text: 'Portfolio'
}, (chart) ->
# on complete
textX = chart.plotLeft + chart.series[0].center[0]
textY = chart.plotTop + chart.series[0].center[1]
span = '<span id="pieChartInfoText" style="position:relative; text-align:center;">'
span += '<span style="font-size: 14px">' + scheme_distribution[0][0] + ' ' + scheme_distribution[0][1] + '%</span><br>'
span += '<span style="font-size: 14px">' + scheme_distribution[1][0] + ' ' + scheme_distribution[1][1] + '%</span><br>'
span += '<span style="font-size: 14px">' + scheme_distribution[2][0] + ' ' + scheme_distribution[2][1] + '%</span><br>'
span += '</span>'
$('#addText').append span
span = $('#pieChartInfoText')
span.css 'left', textX + span.width() * -0.4
span.css 'top', textY + span.height() * -0.5
return
)
return
und hier ist mein Code Serie Graph zur Darstellung:
$ ->
seriesOptions = []
seriesCounter = 0
names = [
'good'
'bad'
'average'
]
current_time = new Date();
# set data
scenario = $("#portfolio_chart").data('scenario')
###
# Create the chart when all data is loaded
# @returns {undefined}
###
createChart = ->
$('#portfolio_chart').highcharts 'StockChart',
legend:
enabled: true
layout: 'horizontal',
align: 'center',
verticalAlign: 'top',
y:25
rangeSelector: selected: 5
yAxis:
labels: formatter: ->
(if @value > 0 then ' + ' else '') + @value + '%'
plotLines: [ {
value: 0
width: 2
color: 'silver'
} ]
plotOptions:
series:
compare: 'value'
turboThreshold: 0
tooltip:
pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.change}%)<br/>'
valueDecimals: 2
formatter: ->
if this.x > current_time
good = this.points[0]
average = this.points[2]
bad = this.points[1]
date = '<b><span style="color: black"><b>Date:</b> ' + new Date(good.x) + '</span></b><br>'
good_tooltip = '<span style="color:' + good.color + '">' + good.series.name + '</span> : <b>' + good.y + '</b> <br>'
average_tooltip = '<span style="color:' + average.color + '">' + average.series.name + '</span> : <b>' + average.y + '</b> <br>'
bad_tooltip = '<span style="color:' + bad.color + '">' + bad.series.name + '</span> : <b>' + bad.y + '</b> <br>'
return date + good_tooltip + average_tooltip + bad_tooltip;
else
average = this.points[2]
date = '<span style="color: black"><b>Date:</b> ' + new Date(average.x) + '</span></b><br>'
average_tooltip = '<span style="color:' + average.color + '">' + average.series.name + '</span> : <b>' + average.y + '</b> <br>'
return date + average_tooltip;
series: seriesOptions
return
$.each names, (i, name) ->
seriesOptions[i] =
name: name
data: scenario[name]
type: 'spline'
# As we're loading the data asynchronously, we don't know what order it will arrive. So
# we keep a counter and create the chart when all the data is loaded.
seriesCounter += 1
if seriesCounter == names.length
createChart()
Zweitens die zweite Kurve js auch Graph verwendet wird, auf verschiedenen zeigen Seite für verschiedene Datenreihen. Aber es zeigt nur eine Grafik auf einmal. Ich weiß, dass die Abfrage ziemlich absolut ist, aber ich weiß nicht, wie ich das auf andere Weise erklären soll.
Jede Hilfe oder Vorschlag zur Lösung dieses Problems ist willkommen.
Vielen Dank!
EDIT Wenn Sie weitere Beschreibung oder mehr Code benötigen, wie ich dies tue, ich bereit, es zu schaffen.
scheme_distribution_chart bekommen und portfolio_chart auf der HTML vorhanden? – Thorin
http://jsfiddle.net/7cvCX/313/ –
Hallo @Ansar ja, sie sind auf der gleichen Seite. – VoidZero