Próbuję wykreślić dwie polarne wykresy na jednej figurze. Zobacz poniższy kod:Dodaj drugą oś do wykresu polarnego
fig = super(PlotWindPowerDensity, self).get_figure()
rect = [0.1, 0.1, 0.8, 0.8]
ax = WindSpeedDirectionAxes(fig, rect)
self.values_dict = collections.OrderedDict(sorted(self.values_dict.items()))
values = self.values_dict.items()
di, wpd = zip(*values)
wpd = np.array(wpd).astype(np.double)
wpdmask = np.isfinite(wpd)
theta = self.radar_factory(int(len(wpd)))
# spider plot
ax.plot(theta[wpdmask], wpd[wpdmask], color = 'b', alpha = 0.5)
ax.fill(theta[wpdmask], wpd[wpdmask], facecolor = 'b', alpha = 0.5)
# bar plot
ax.plot_bar(table=self.table, sectors=self.sectors, speedbins=self.wpdbins, option='wind_power_density', colorfn=get_sequential_colors)
fig.add_axes(ax)
return fig
Długość paska jest baza danych (ile punktów próbkowania dla tego sektora). Kolory słupków pokazują częstotliwość niektórych przedziałów wartości (np. 2,5-5 m/s) w sektorze korespondentów (niebieski: niski, czerwony: wysoki). Niebieski wykres pajęczyny pokazuje średnią wartość dla każdego sektora.
W przedstawionej postaci, wartości każdej działki są podobne, ale jest to rzadkie. Muszę przypisać drugi wykres do innej osi i pokazać tę oś w innym kierunku.
EDIT:
Po ładnym odpowiedź Joe, i uzyskać wynik na rysunku. To prawie wszystko, co chciałem osiągnąć. Ale są pewne punkty, których nie byłem w stanie wymyślić.
Fabuła jest wykonywana dla dynamicznie zmieniających się baz danych. Dlatego potrzebuję dynamicznego sposobu na uzyskanie tej samej lokalizacji kręgów. Do tej pory rozwiązać go z:
start, end = ax2.get_ylim() ax2.yaxis.set_ticks(np.arange(0, end, end/len(ax.yaxis.get_ticklocs())))
oznacza: do drugiej osi i zmieniać kleszczy w celu dopasowania do ticklocs do jednego roku od pierwszej osi. W większości przypadków uzyskuję miejsca po przecinku, ale nie chcę tego, ponieważ to psuje czystość fabuły. Czy istnieje sposób na bardziej inteligentne rozwiązanie tego problemu?
The ytics (promieniowy) w zakresie od 0 do następnego do ostatniego koła. Jak mogę osiągnąć, że wartości wahają się od pierwszego koła do ostatniego (granicy)? To samo dotyczy pierwszej osi.
Proszę poprawić wcięcie. Wygląda na to, że używasz mocno spersonalizowanych zestawów klas, które upraszczają to, co jest trudne. Czy możesz pokazać, czego chcesz, używając tylko standardowego obiektu matplotlib? – tacaswell
Dziękujemy za dodanie obrazu. Miałem za mało ocen reputacji, żeby zrobić to dla siebie. – fidelitas
Co do drugiego pytania o to, jak wyświetlić etykietę ostatniego promienia, to tylko dlatego, że ustawiasz tyknięcia używając 'np.arange'. 'arange' zatrzymuje _przedtem punkt końcowy (np.' np.arange (0, 0.5, 0.1) 'daje' tablicę ([0.0, 0.1, 0.2, 0.3, 0.4]) '). Jeśli chcesz dołączyć punkt końcowy, użyj zamiast tego 'end + dx' (gdzie' dx' to twój interwał). –