2017-08-09 69 views
0

我有一個從等值線圖中得到的x,y值的數組,我想繪製這些值。因爲它是圓圈內的圓形,pyplot在圓圈之間繪製任意線。有誰知道一種方法來刪除這條線?連接兩個圓的yplot線

我嘗試整理不起作用的點。我可以考慮刪除這條線的唯一方法是手動將這些值移動到一個新的數組中並分別繪製它們。不過,我有這些情況中的幾個,並且不希望篩選每個數據點。

#Plotted contours of a variable 
cs1 = ax1.contourf(x,z,refl0,clevs) 

#Get the contour lines for the 10th contour of the plot 
p1 = cs1.collections[10].get_paths()[0] 
v = p1.vertices 
x1=v[:,0] 
y1=v[:,1] 

#Plot the contour lines 
ax1 = plt.subplot(111) 
ax1.plot(x1,y1) 

enter image description here

這裏是一個通用的示例代碼

import numpy as np 
from matplotlib import pyplot as plt 

x= np.arange(-100,100,10) 
y= np.arange(-100,100,10) 

#Make a random circular function 
xi,yi = np.meshgrid(x,y) 
z= 2*xi +xi**2 -yi +yi**2 

#This is the contour plot of the data 
ax = plt.subplot(111) 
clevs = np.arange(-100,110,10)*100 
cs1 = ax.contourf(xi,yi,z,clevs) 
plt.show() 

#Get the contour lines for the 10th contour of the above plot 
p1 = cs1.collections[11].get_paths()[0] 
v = p1.vertices 
x1=v[:,0] 
y1=v[:,1] 

#Plot the contour lines 
ax1 = plt.subplot(111) 
ax1.plot(x1,y1) 
plt.show() 
+0

我最初的猜測是你必須將數據集分成單獨的數組。如果兩個圓的點數都相等,那麼可以通過對數組進行索引來相對簡單地實現這一點。讓我知道,我可以制定一個適當的答案。 – fsimkovic

+0

不幸的是,圈子的點數不一樣,點的數量也沒有規律的間隔。我有9個這樣的其他數組,每個圈也有不同數量的點。 – BenT

+0

你能提供一些更多的信息嗎?即什麼是'cs1.collections',你如何生成數據點,什麼是'val'等等...... – fsimkovic

回答

4

如果目的是繪製兩個特定的輪廓線,你可以簡單地選擇有問題的水平,並做了contour情節他們:

import numpy as np 
from matplotlib import pyplot as plt 

x= np.arange(-100,100,10) 
y= np.arange(-100,100,10) 

#Make a random circular function 
xi,yi = np.meshgrid(x,y) 
z= 2*xi +xi**2 -yi +yi**2 

ax = plt.subplot(111) 
clevs = np.arange(-100,110,10)*100 
cs1 = ax.contourf(xi,yi,z,clevs) 

# chose level number 11 and 12 and draw them in black. 
cs2 = ax.contour(xi,yi,z,clevs[11:13], colors="k") 

plt.show() 

enter image description here