matplotlib'de dikey ve yatay çizgiler


122

Belirtilen sınırlarda neden yatay ve dikey çizgiler oluşturamadığımı tam olarak anlamıyorum. Verileri bu kutuyla sınırlamak istiyorum. Ancak taraflar benim talimatlarıma uymuyor gibi görünüyor. Bu neden?

# CREATING A BOUNDING BOX
# BOTTOM HORIZONTAL
plt.axhline(y=.4, xmin=0.25, xmax=0.402, linewidth=2, color = 'k')
# RIGHT VERTICAL
plt.axvline(x=0.402, ymin=0.4, ymax = 0.615, linewidth=2, color='k')
# LEFT VERTICAL
plt.axvline(x=0.1, ymin=0.58, ymax = 0.79, linewidth=2, color='k')
plt.show()

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

Yanıtlar:


166

Çağırdığınız pyplot fonksiyonları axhline()ve axvline()koordinatlardan bağımsız olarak eksen aralığının bir bölümünü kapsayan çizgiler çizin. Eksenin minimumu olarak 0.0 ve maksimum olarak 1.0 parametreleri xminveya yminkullanım değeri.

Bunun yerine, plt.plot((x1, x2), (y1, y2), 'k-')k renginde (x1, y1) noktasından (x2, y2) noktasına bir çizgi çizmek için kullanın . Bakın pyplot.plot.


3
matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axhline <- belgeler. Cevabınızı bu bağlantıyı içerecek şekilde düzenlemelisiniz
tacaswell

15
Yatay ve dikey çizgileri çizmek için başka bir çözüm , sırasıyla hlinesveya kullanmaktır vlines, çünkü bu normal bir plotimo
sodd

20

Bu, Matplotlib'in yeni kullanıcılarının dikey ve yatay çizgiler çizmesi için yaygın bir sorun olabilir. Bu sorunu anlamak için Matplotlib'de farklı koordinat sistemlerinin bulunduğunun farkında olmalısınız .

Axhline ve axvline yöntemi , eksen koordinatında çizgiler çizmek için kullanılır . Bu koordinat sisteminde, grafiğinizin veri aralığından bağımsız olarak, sol alt noktanın koordinatı (0,0) iken, sağ üst noktanın koordinatı (1,1) 'dir. Hem parametre xminhem xmaxde [0,1] aralığındadır.

Öte yandan, veri koordinatında çizgiler çizmek için yöntem hatları ve vline'lar kullanılır . Aralık ve x ekseni veri sınırı aralığı içindedir.xminxmax

Somut bir örnek alalım,

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 100)
y = np.sin(x)

fig, ax = plt.subplots()

ax.plot(x, y)
ax.axhline(y=0.5, xmin=0.0, xmax=1.0, color='r')
ax.hlines(y=0.6, xmin=0.0, xmax=1.0, color='b')

plt.show()

Aşağıdaki arsayı üretecek: görüntü açıklamasını buraya girin

Ve yöntemi için xminve değeri xmaxaynıdır . Ancak üretilen hattın uzunluğu farklıdır.axhlinehlines


16

Bir sınırlayıcı kutu eklemek istiyorsanız, bir dikdörtgen kullanın:

ax = plt.gca()
r = matplotlib.patches.Rectangle((.5, .5), .25, .1, fill=False)
ax.add_artist(r)

Rectangle doktor

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.