2012-12-21 8 views
25

Sto trasmettendo una serie di diagrammi elevati in una pagina. In alcuni casi, tutti i dati per il periodo di tempo specificato potrebbero tornare con valori 0.Grafici elevati: assicurarsi che il valore dell'asse y 0 sia sul grafico inferiore

In tal caso, il grafico appare così: http://jsfiddle.net/charliegriefer/KM2Jx/1/

C'è solo 1 Asse y etichetta, 0, ed è al centro del grafico.

Mi piacerebbe forzare il valore 0 per l'asse y nella parte inferiore del grafico, che sarebbe coerente con altri grafici nella pagina che contengono dati.

Hanno provato varie proprietà yAxis, come "min: 0", "minPadding: 0", "maxPadding: 0", "startOnTick: true".

Sembra che dovrebbe essere abbastanza semplice, ma io sono in perdita :(

Rilevante codice asseY:

yAxis: { 
    min: 0, 
    minPadding: 0, 
    startOnTick: true, 
    title: { 
     text: "" 
    } 
}, 

risposta

9

unico modo ho potuto farlo a vederlo "correttamente" ero da anche fornendo un valore yAxis max. Penso che si tratti di un problema di HighCharts quando non si forniscono elementi dati con un valore y. Disegna il grafico migliore che pensa possibile

+0

Ho provato ad aggiornare il violino con un valore xAxis max, ma questo non ha funzionato per me. Il grafico ha reso lo stesso. Apprezzo la risposta Ciò che ha funzionato è delineato per me in una risposta separata. – charliegriefer

+0

Ah si. Questo lo risolve. Molto bello Devo ancora fare il pre-processing per la mia situazione, ma quella sarebbe la risposta giusta. Grazie! – charliegriefer

+0

Nessun problema. Sono d'accordo che la libreria HighCharts deve essere più intelligente a riguardo. – wergeld

3

Ho anche postato questo nel forum HighCharts, dove Ho una risposta che sembra funzionare, ma sfortunatamente Mi coinvolgerò nella pre-elaborazione dei dati prima di eseguire il rendering dei grafici per verificare tutti i valori dei dati "0" ... ma funzionerà. Vorrei solo che ci fosse qualcosa di più "integrato" in HighCharts.

Così, dopo sommando i valori "Y", se ottengo 0, le proprietà dell'asse y dovrebbe essere simile a questo:

yAxis: { 
    minPadding: 0, 
    maxPadding: 0,   
    min: 0, 
    max:1, 
    showLastLabel:false, 
    tickInterval:1, 
    title: { 
      text: "" 
    } 
} 

See: http://jsfiddle.net/KM2Jx/2/

I tasti sembrano essere il " max "e" showLastLabel "proprietà.

3

Ecco una soluzione che mi è venuta in mente e che non richiede alcuna pre-elaborazione dei dati e solo che facciano i diagrammi ad alta risoluzione, come prima dell'aggiornamento. http://jsfiddle.net/QEK3x/

if(chart.yAxis[0].dataMax === 0) 
{ 
    chart.yAxis[0].setExtremes(0, 5); 
} 

Hai solo bisogno di controllare il primo asse della serie, come se il primo non è 0, allora il problema non si verificherà. Potrei inviare una richiesta di pull per questo ai grafici alti, anche se mi sento come se avessero inteso questa funzionalità per qualche motivo.

+0

Funziona, ma farà ridisegnare il grafico. Se non vuoi che ciò accada, sembra che devi pre-elaborare i dati per scoprire se è necessario impostare un valore 'max'. –

+0

Questa logica ha funzionato per me. Ho dovuto regolarlo leggermente come segue, ma lo stesso principio: if (highChartConfig.series [0] .data.dataMax == 0) { highChartConfig.yAxis [0] .max = 50; } – Stu1986C

36

ho trovato un'altra soluzione (e molto semplice):

È possibile impostare asse y minRange proprietà:

yAxis: { 
    ... 
    minRange : 0.1 
} 

Questo rende Highcharts rendono asseY valori minimi e massimi, quando tutti i dati è 0 .

UPDATE:

Highcharts 4.1.9 fix ha anche bisogno di:

 plotOptions: { 
      line: { 
       softThreshold: false 
      } 
     } 

updated js fiddle

+0

Ho dovuto combinare questo con il minimo, ma questo funziona benissimo! Questa è di gran lunga la migliore risposta in quanto non richiede alcuna pre-elaborazione. – opsb

+0

minRange + softThreshold funziona perfettamente, questa dovrebbe essere la risposta accettata. –

+0

L'aggiornamento 4.1.9 non ha funzionato per me, se si stanno utilizzando i grafici Higher più recenti utilizzare il valore softMax: 'yAxis: { softMax: 10 }' –

0

Basta aggiungere l'opzione "min"

yAxis: { 
    min: 0 
} 
+0

non funzionerà se si dispone di valori negativi. non mostreranno. – MurWade

2

Dal Highcharts 5.0.1, è anche possibile utilizzare SoftMax.

SoftMax: Numero
massimo morbido per l'asse. Se il numero massimo di dati della serie è maggiore di questo, l'asse rimarrà al massimo, ma se il numero massimo di dati della serie è superiore, l'asse si fletterà per mostrare tutti i dati.

yAxis: { 
    min: 0, 
    softMax: 100, 
    ... 
} 

Ecco un esempio con un istogramma: http://jsfiddle.net/84LLsepj/

Si noti che attualmente, in Highcharts 5.0.7, non sembra funzionare per tutti i tipi di grafici. Come puoi vedere in this other jsfiddle, non funziona con il grafico a linee.

0

Per Highcharts 5.x.x, si dovrebbe essere in grado di specificare solo:

yAxis: { 
    softMin: 0, 
    softMax: 1, 
}; 

Questo non funziona per grafico a linee, che richiede che anche di impostare minRange nello stesso oggetto di configurazione come sopra. Esperimento con valori diversi, dal momento che definisce ad esempio minRange: 6, creato un intervallo su yAxis tra 0 e 4.

Problemi correlati