Zaman zaman boşluk ile etkili "sürekli" sensör okumaları olan bir veri setim var. Bununla birlikte, hiçbir verinin kaydedilmediği birkaç dönem vardır. Bu boşluklar, numune periyodundan anlamlı ölçüde daha uzundur.Satır aralığına boşluk/boşluk koyun
Varsayılan olarak, pyplot her veri noktasını bir sonraki noktaya bağlar (bir çizgi stil kümem varsa), ancak bu iki veri noktasını uzun bir aralığın her iki tarafına bağladığında biraz yanıltıcı olduğunu hissediyorum.
Orada hiç satır olmamayı tercih ederim; Yani, hattın durup tekrar aradan sonra tekrar başlamasını istiyorum.
Bu boşluk bölümlerinde None
y değeriyle bir öğe eklemeyi denedim, ancak çizgiyi arsanın önceki bir bölümüne geri göndermiş gibi görünüyor (garip bir şekilde bu satırlar tüm yakınlaştırma düzeylerinde görünmüyor) .
Düşündüğüm diğer seçenek, her parçayı plot
'a ayrı bir çağrı ile çizmek, ancak bu biraz çirkin ve hantal olur.
Bunu gerçekleştirmenin daha zarif bir yolu var mı?
Düzenleme: Aşağıda, davranışı gösteren en az çalışan bir örnek verilmiştir. İlk arsa, kaçınmaya çalıştığım birleşme çizgisidir. İkinci arsa, bir None
değerinin eklenmesinin işe yaradığını gösterir, ancak çizimin görüntüsünü kaydırırsanız, üçüncü şekilde gösterileni elde edersiniz, çizginin artalanının önceki bir bölümüne atlama.
import numpy as np
import matplotlib.pyplot as plt
t1 = np.arange(0, 8, 0.05)
t2 = np.arange(10, 14, 0.05)
t = np.concatenate([t1, t2])
c = np.cos(t)
fig = plt.figure()
ax = fig.gca()
ax.plot(t, c)
ax.set_title('Undesirable joining line')
t1 = np.arange(0, 8, 0.05)
t2 = np.arange(10, 14, 0.05)
c1 = np.cos(t1)
c2 = np.cos(t2)
t = np.concatenate([t1, t1[-1:], t2])
c = np.concatenate([c1, [None,], c2])
fig = plt.figure()
ax = fig.gca()
ax.plot(t, c)
ax.set_title('Ok if you don\'t pan the plot')
fig = plt.figure()
ax = fig.gca()
ax.plot(t, c)
ax.axis([-1, 12, -0.5, 1.25])
ax.set_title('Strange jumping line')
plt.show()
Tekrarlanabilir bir örnek oluşturmak mümkün mü, özellikle şu anda kullanmakta olduğunuz matplotlib kodunu göstermek mümkün mü? –
İyi fikir. Örnek eklendi. – Alex
Ya iki kere arsa() çağırırsanız? Yani. ax.plot (t1, c1) ve ax.plot (t2, c2). Rengi manuel olarak ayarlamanız gerekir: ax.plot (t1, c1, c = "b") – Robbert