Questo articolo mostrerà quanto sia facile creare un grafico a dispersione con la sua area di trama divisa orizzontalmente e verticalmente in quattro regioni. Le regioni sono separate dagli assi del grafico e questi assi possono essere posizionati dove necessario per delimitare i quadranti.
Ho scritto un tutorial che mostra come creare un grafico Excel con sfondo quadrante colorato, che era più complicato, in quanto utilizzava aree impilate e assi secondari per ottenere lo sfondo colorato. Questo è molto più semplice da creare e mantenere, e serve più o meno lo stesso scopo.
Ecco i dati X e Y di esempio, con le medie calcolate e il grafico a dispersione XY iniziale. Posizioneremo gli assi alle rispettive medie dei dati X e Y, sebbene tu possa posizionarli ovunque abbia senso nella tua analisi.
Abbiamo bisogno di riposizionare gli assi di questo grafico. Fare doppio clic sull’asse orizzontale o selezionare l’asse orizzontale e premere Ctrl+1 (numero uno) per aprire il riquadro attività Formato asse (mostrato qui, Excel 2013) o la finestra di dialogo Formato asse (funziona più o meno come nelle versioni precedenti di Excel). In Opzioni asse >Croci asse verticale, selezionare l’opzione Valore asse e immettere la media X nella casella, come mostrato.
Il risultato è mostrato sotto a sinistra. Ripetere l’operazione per l’asse verticale, in basso a destra.
Quelle etichette degli assi sono totalmente nel modo, ma è facile spostarle. Formattare ogni asse (aprire il riquadro attività o la finestra di dialogo come sopra) e in Etichette > Posizione etichetta, selezionare Basso dal menu a discesa.
Ora quelle etichette sono lungo i bordi del grafico, dove fanno più bene che male (sotto a sinistra). Si può fare una piccola quantità di formattazione per rendere i quadranti sporgono un po ‘ più chiaramente. Nel grafico in basso a destra, ho usato una tonalità di grigio più chiara per le linee della griglia, e ho usato un colore più scuro, infatti, lo stesso colore dei marcatori, per il colore della linea dell’asse.
È facile usare VBA per posizionare gli assi e le etichette degli assi, usando una semplice routine come quella mostrata di seguito. Questa routine posiziona le etichette, quindi utilizza le medie calcolate nel foglio di lavoro per posizionare le linee degli assi.
Sub AxesAsQuadBoundaries1() With ActiveChart With .Axes(xlCategory) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = ActiveSheet.Range("A17").Value2 End With With .Axes(xlValue) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = ActiveSheet.Range("B17").Value2 End With End WithEnd Sub
La routine successiva salta i calcoli del foglio di lavoro, prendendo invece le medie dei valori X e Y tracciati nel grafico per posizionare le linee degli assi.
Sub AxesAsQuadBoundaries2() Dim vData As Variant With ActiveChart vData = .SeriesCollection(1).XValues With .Axes(xlCategory) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With vData = .SeriesCollection(1).Values With .Axes(xlValue) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With End WithEnd Sub
È anche possibile utilizzare gli eventi del foglio di lavoro per riposizionare gli assi del grafico. I miei valori X e Y sono stati calcolati usando =RANDBETWEEN(2,14)
, quindi ogni volta che il foglio di lavoro calcola (ad esempio, premendo il tasto funzione F9), i valori cambiano. Posso attingere a questo evento di calcolo come segue.
- Fare clic con il pulsante destro del mouse sulla scheda Foglio di lavoro e selezionare Visualizza codice dal menu a comparsa. L’editor VB si apre con un modulo di codice corrispondente al foglio di lavoro.
- Seleziona Foglio di lavoro dal menu a discesa a sinistra nella parte superiore del nuovo modulo di codice.
- Seleziona Calcola dal menu a discesa a destra.
- Inserire il codice come mostrato.
Ecco il codice in modo da non dover digitare tutto da soli. Basta copiare e incollare nel modulo di codice del foglio di lavoro.
Private Sub Worksheet_Calculate() Dim vData As Variant With Me.ChartObjects(1).Chart vData = .SeriesCollection(1).XValues With .Axes(xlCategory) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With vData = .SeriesCollection(1).Values With .Axes(xlValue) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With End WithEnd Sub
A seconda dei dettagli del modello di foglio di lavoro, è possibile utilizzare Worksheet_Calculate
, Worksheet_Change
, Worksheet_PivotTableUpdate
, o altre procedure di eventi per aggiornare il grafico.