2017-08-17 4 views
2

Ich zeichne ein 3x3 Raster von polaren Projektionen (die ein wenig wie Radar Plots aussehen).Ändern Sie die Größe der Unterplots für die Polarprojektion

z.B. genau wie in diesem Beispiel: https://matplotlib.org/examples/pylab_examples/polar_demo.html

Ich leite die Daten zu zeichnen, wie beabsichtigt, würde aber jetzt jede polare Projektion wie durch eine Variable zu skalieren, so dass ein Teil des Kreises ist größer als andere, wie in der Abbildung unten. scale either by width/height or area

Welche Befehle muss ich auf die Achse anwenden, wenn ich durch Subplots fahre?

Ich habe versucht, Autoscale ein-/auszuschalten. Es ist möglich, dass gridspec.Gridspec() funktioniert, aber ich bin mir nicht sicher, ob dies die beste Lösung ist, obwohl es gut sein könnte. Danke

+0

Dies wird einfacher, wenn Sie ein minimales, komplettes Arbeitsbeispiel posten, aber da Sie eine polare Projektion verwenden, kann es ausreichend sein, um skaliere den Radius mit dieser individuellen Variable. – ml4294

Antwort

2

Schöne Frage.

Sie können auch Ihre Plots platzieren, in dem Sie einen kontinuierlichen Raum verwenden, um direkt fig.add_axes() zu haben:

f = plt.figure() 
ax = f.add_axes([0.05, 0.4, 0.2, 0.2], polar=True) # Left, Bottom, Width, Height 
ax2 = f.add_axes([0.30, 0.2, 0.6, 0.6], polar=True) 
r = np.arange(0, 2, 0.01) 
theta = 2 * np.pi * r 
ax.plot(theta, r) 
ax2.plot(theta, r) 

polar plot with different size


Weniger gute Version

Sie können versuchen, verschiedene einstellen Achsengröße beim Erstellen:

import numpy as np 
import matplotlib.pyplot as plt 

r = np.arange(0, 2, 0.01) 
theta = 2 * np.pi * r 

ax = plt.subplot2grid((2,3), (0,0), polar=True) 
ax2 = plt.subplot2grid((2,3), (0,1), rowspan=2, colspan=2, polar=True) 
ax.plot(theta, r) 
ax2.plot(theta, r) 

polar plot with different size

Sie können ein größeres Gitter als 2x3 und haben mehr Granularität auf der Größe des Grundstücks.

(nicht die verschiedenen Grafikstile beachten)

HTH

+0

danke - ich hatte nicht daran gedacht, ein größeres Raster als 2x3 zu verwenden. Das kann in einigen Fällen funktionieren. Ich habe derzeit gemischte Ergebnisse mit 'gridspec (..., widthratios = [], heighthratios = [])' – dreab

+0

Danke - zweite Option scheint die beste Lösung zu sein! – dreab

+0

Ja, das denke ich auch. Akzeptiere die Antwort, damit die Leute wissen, dass sie dein Problem löst. (Wenn es Ihr Problem gelöst hat!) – jrjc

Verwandte Themen