2 Stimmen

Highcharts - Exportieren des aktuellen Zustands eines Diagramms

Die Exportmethode von Highcharts verwendet den Ausgangszustand des Diagramms und nicht den letzten Zustand, der sich aus der Interaktion des Benutzers ergibt. Wenn Sie einige Serien ein-/ausblenden und dann das Diagramm exportieren, erhalten Sie immer noch alle Serien und nicht das, was das Diagramm tatsächlich zeigt.

var chart;
$(document).ready(function() {

    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'chart',
            defaultSeriesType: 'line',
        },

        title: {
            text: 'Expression Profile',
        },

        subtitle: {
            text: 'Reference: act'
        },

        xAxis: {
            categories: ['14das-seedling','25das-aerial','35das-aerial',
                         '42das-rosette','42das-stem','53das-stem',
                         '53das-inflores'],
            title: {
                text: 'Development stages',
                margin:20
            }

        },

        yAxis: {
            title: {                                            
                text: 'Log10 act'
            },

            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }]
        },

        legend: {
            margin:20
        },

        tooltip: {
            formatter: function() {
                return '<b>mir'+ this.series.name +'</b><br/>'+
                                this.x +' <br/>log10:'+ this.y ;
            }
        },

        series: [
            {
                name: '156a',
                data: [-2.75607, -3.41066, -4.10053, -4.63856, 
                       -4.73462,-4.6145,-3.90987]
            },
            {
                name: '156b',
                data: [-4.15935, -6.54969, -6.70229, -5.80646, 
                       -5.68092,-5.38481,-5.96406]
            },
            {
                name: '156c',
                data: [-4.83317, -5.52142, -4.94995, -5.47179, 
                       -4.97123,-4.86163,-5.12806]
            },
            {
                name: '156d',
                data: [0, -5.93499, -5.41856, -5.88918, 
                       -6.70304,-5.69335,-5.39792]
            },
            {
                name: '156e',
                data: [-4.0707, -6.1185, -6.58353, -6.17734, 
                       -6.84433,-5.4114,-5.37817]
            },
            {
                name: '156f',
                data: [-3.97561, -5.02619, -5.67834, -5.65722, 
                       -5.76238,-4.51125,-5.30344]
            },
            {
                name: '156g',
                data: [-3.81589, -2.50758, -2.41623, -3.63983, 
                       -3.73004,-2.90055,-3.61997]
            },
            {
                name: '156h',
                data: [-4.31169, -5.74017, -5.55419, -5.26679,
                       -5.01009,-4.99596,-5.68062]
            }
         ] 
    });
});

Hier ist meine Fiedel: http://jsfiddle.net/sherlock85/safKs/

Ist es möglich, den aktuellen Stand des Diagramms zu exportieren?

Für jede Hilfe wären wir dankbar.

1voto

Elzo Valugi Punkte 25592

Bei mir wird der letzte Stand exportiert, auch wenn ich das Diagramm ändere. Ich schätze, wenn Sie nach Ihren Änderungen ein chart.redraw() ausführen, wird der letzte Stand exportiert. Versuchen Sie auch, auf die neueste Version von Highcharts zu aktualisieren.

1voto

Jared Punkte 306

Dieses Problem wurde in Version 2.1.5 von Highcharts behoben. Ich glaube, der Kommentar aus dem Änderungsprotokoll Die unten stehende Tabelle behandelt Ihr Problem.

Exportierte Diagramme berücksichtigen jetzt die vom Benutzer eingestellten Minimal- und Maximalwerte nach der Zoom- und Sichtbarkeitsoption.

0voto

Andries Punkte 1055

Das Problem besteht auch dann noch, wenn Sie den folgenden Code in Ihrem Diagramm verwendet haben:

chart = new Highcharts.Chart({
        chart: {
            ...,
            events: {
                load: function(event) {
                    this.series.forEach(function(d,i){if(d.options.id==1)d.hide()})
                }
            }    
        },...

Dieser Teil des Codes ist für das anfängliche Ausblenden von Reihen in Ihrem Diagramm verantwortlich (mit id==1 in diesem Beispiel). Es scheint den negativen Nebeneffekt zu haben, dass Sie den aktuellen Zustand Ihres Diagramms nicht exportieren können.

Entfernen Sie es, und das ursprüngliche Problem ist gelöst.

Wenn Sie das "anfängliche Verstecken" der Datenreihen beibehalten wollen und z. B. AJAX (und jQuery) verwenden, um die Daten abzurufen, verwenden Sie stattdessen die folgende Art von Code:

$.ajax({
    type: "GET",
    url: myURL,
    data: {data: myData},
    dataType: 'json',
    success: function(data) {
        chart.series[0].setData(data[0], true);
        chart.series[1].setData(data[1], true);
    },
    complete: function(jqXHR, textStatus) {
        chart.series[1].hide();
    }
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X