dit artikel laat zien hoe eenvoudig het is om een spreidingsdiagram te maken met het plotgebied horizontaal en verticaal verdeeld in vier gebieden. De regio ‘ s worden gescheiden door de kaartassen, en deze assen kunnen worden gepositioneerd waar nodig om de kwadranten af te bakenen.
Ik heb een tutorial geschreven die laat zien hoe u een Excel-grafiek met gekleurde Kwadrantachtergrond maakt, wat ingewikkelder was omdat het gestapelde gebieden en secundaire Assen gebruikte om de gekleurde achtergrond te krijgen. Dit is veel eenvoudiger te creëren en te onderhouden, en dient veel hetzelfde doel.
hier zijn de gegevens van de steekproef X en Y, met berekende gemiddelden, en het initiële XY-spreidingsdiagram. We positioneren de assen op de respectievelijke gemiddelden van de x-en Y-gegevens, hoewel u ze kunt positioneren waar het zinvol is in uw analyse.
we moeten de assen van deze grafiek herpositioneren. Dubbelklik op de horizontale as of selecteer de horizontale as en druk op Ctrl+1 (cijfer één), om de te openen Indeling Axis taak deelvenster (hier getoond, Excel 2013) or Indeling Axis dialoogvenster (werkt vrijwel hetzelfde in eerdere Excel-versies). Onder As opties >Verticale As kruisen, selecteer de as waarde optie en voer de x gemiddelde in het vak, zoals getoond.
het resultaat wordt linksonder weergegeven. Herhaal dit voor de verticale as, rechtsonder.
deze aslabels staan volledig in de weg, maar het is gemakkelijk om ze te verplaatsen. Formatteer elke as (open het taakvenster of dialoogvenster zoals hierboven) en selecteer laag onder Labels > Labelpositie in het vervolgkeuzemenu.
nu zijn deze labels langs de randen van de grafiek, waar ze meer goed dan kwaad doen (linksonder). Je kunt een kleine hoeveelheid formatteren om de kwadranten wat duidelijker uit te laten steken. In de grafiek rechtsonder, heb ik een lichtere grijstint gebruikt voor de rasterlijnen, en ik heb een donkerdere kleur gebruikt, in feite dezelfde kleur als de markeringen, voor de kleur van de aslijn.
het is eenvoudig om VBA te gebruiken om de assen en aslabels te positioneren, met behulp van een eenvoudige routine zoals hieronder weergegeven. Deze routine positioneert de labels en gebruikt vervolgens de gemiddelden berekend in het werkblad om de aslijnen te positioneren.
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
de volgende routine slaat de werkbladberekeningen over, in plaats daarvan worden de gemiddelden van de x-en Y-waarden in het diagram gebruikt om de aslijn te positioneren.
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
u kunt zelfs werkbladgebeurtenissen gebruiken om de grafiekassen te verplaatsen. Mijn X-en Y-waarden werden berekend met =RANDBETWEEN(2,14)
, dus wanneer het werkblad berekent (bijvoorbeeld door op de functietoets F9 te drukken), veranderen de waarden. Ik kan deze rekengebeurtenis als volgt gebruiken.
- Klik met de rechtermuisknop op het tabblad werkblad en selecteer Bekijk Code in het pop-upmenu. De VB-Editor wordt geopend met een code module die overeenkomt met het werkblad.
- Selecteer werkblad in de linker dropdown boven aan de nieuwe codemodule.
- Selecteer berekenen uit de rechter dropdown.
- Voer de aangegeven code in.
te houden Hier is de code zodat u niet alles zelf hoeft in te typen. Kopieer en plak eenvoudig in de codemodule van het werkblad.
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
afhankelijk van de details van uw werkbladmodel, kunt u de Worksheet_Calculate
, Worksheet_Change
, Worksheet_PivotTableUpdate
, of andere gebeurtenisprocedures om de grafiek bij te werken.