Seltsames Showverhalten

Oct 07 2020

Wenn Sie versuchen, ein diskretes Diagramm in ein Histogramm zu überlagern, wird das Histogramm unabhängig von der Reihenfolge, in der ich jedes Argument in Show übergebe, über dem diskreten Diagramm gestapelt. Ist es möglich, den DiscretePlot stattdessen über das Histogramm zu legen?

Antworten

3 SjoerdSmit Oct 07 2020 at 17:29

Wenn Sie ein Histogramm anzeigen und mit einem PDF vergleichen möchten, müssen Sie die Eigenschaften "Wahrscheinlichkeit" (für diskrete Verteilungen) oder "PDF" (für kontinuierliche Verteilungen) angeben, damit die beiden übereinander passen. Andernfalls werden die Achsen nicht übereinstimmen und eine Handlung wird die andere überfluten:

data = RandomVariate[GeometricDistribution[1/2], 100];
Show[
 Histogram[data, Automatic, "Probability"],
 DiscretePlot[PDF[GeometricDistribution[1/2], x], {x, 0, Max[data]}],
 PlotRange -> All
]

Für kontinuierliche Daten:

data = RandomVariate[ExponentialDistribution[1/2], 100];
Show[
 Histogram[data, Automatic, "PDF"],
 Plot[PDF[ExponentialDistribution[1/2], x], {x, 0, Max[data]}],
 PlotRange -> All
]
1 DanielHuber Oct 07 2020 at 17:18

In Show überschreiben später angegebene Plotoptionen die zuvor angegebenen. Stellen Sie also sicher, dass Ihre Achsen passen oder zeichnen Sie sie nicht. Es gibt noch eine andere Möglichkeit. Überlagerung zeichnet einfach ein Bild über ein anderes.

Hier ist ein Beispiel:

d1 = RandomReal[{0, 1}, 100];
g1 = Histogram[d1]
g2 = Plot[30 Sin[2 Pi x], {x, 0, 1}]
Show[{g1, g2}]
Overlay[{g1, g2}]