Matplotlib'de iki dikey çizgi arasını doldurun


104

Ben geçti örneklerde de matplotlibdokümantasyon, ama ben iki spesifik dikey çizgiler arasındaki alanı dolduran bir arsa hale nasıl bana belli değildi.

Örneğin, x=0.2ve arasında bir arsa oluşturmak istediğimi varsayalım x=4( arsanın tüm yaralığı için). Kullanmalı mıyım fill_between, fillyoksa fill_betweenx?

Bunun için wherekoşulu kullanabilir miyim ?

Yanıtlar:


212

axvspanİşlevler arasındaki dolgudan çok istediğiniz gibi geliyor . Aradaki fark axvspan(ve axhspan), nasıl yakınlaştırdığınıza bakılmaksızın grafiğin tüm y (veya x) kapsamını dolduracak olmasıdır.

Örneğin, axvspan8 ile 14 arasındaki x bölgesini vurgulamak için kullanalım :

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, alpha=0.5, color='red')

plt.show()

görüntü açıklamasını buraya girin

Bunu fill_betweenxyapmak için kullanabilirsiniz , ancak dikdörtgenin boyutları (hem x hem de y) veri koordinatlarında olacaktır . İle axvspan, dikdörtgenin y-uzantıları 0 ve 1'dir ve eksen koordinatları içindedir (başka bir deyişle, çizimin yüksekliğinin yüzdeleri).

Bunu göstermek için, dikdörtgenin yüksekliğinin% 10'undan% 90'ına kadar uzamasını sağlayalım (tüm alanı kaplamak yerine). Yakınlaştırmayı veya kaydırmayı deneyin ve x uzantılarının yakınlaştırma / kaydırma ile hareket ederken, y kapsamlarının görüntü alanında sabit dediğine dikkat edin:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, ymin=0.1, ymax=0.9, alpha=0.5, color='red')

plt.show()

görüntü açıklamasını buraya girin


4
fill_betweenDaha "kıpır kıpır", dikey çizgiler için kullanılacak bir çözümle ilgilenen kişiler transformparametreye (ve bu yanıta ) bir göz
atarlar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.