Tôi đang cố gắng để sản xuất một đường viền đầy cốt truyện trong matplotlib bằng cách sử dụng contourf. Dữ liệu bị thiếu trong một mẫu răng cưa gần cuối cốt truyện. Mảng đường bao hóa ra trống không chỉ nơi dữ liệu ban đầu được đeo mặt nạ, mà còn trong các túi mà thuật toán đường bao không thể nội suy một cách rõ ràng bởi vì không có đủ vùng lân cận dữ liệu tốt.masking một phần của một contourf lô trong matplotlib
Tôi biết cách mở rộng tập dữ liệu để tạo đường nét hợp lý trong các túi này. Tuy nhiên, nếu tôi vẽ sơ đồ dữ liệu mở rộng, tôi sẽ tạo đường viền ở khắp mọi nơi. Tôi muốn che giấu các vùng mà dữ liệu gốc bị thiếu trong màu đen hoặc trắng.
Trên một chủ đề trước, tôi đã học cách làm điều này cho một hình ảnh bằng cách vẽ hình ảnh đầu tiên và sau đó phủ lên hình ảnh khác che khuất các vùng xấu. Các tương tự sẽ là đoạn mã dưới đây, nhưng nó không hoạt động cho một đường viền ... Tôi không thể có được bad_data imshow để che đậy âm mưu contourf mở rộng. Có thể không?
Cảm ơn, Eli
import matplotlib.pyplot as plt
lev = [0.0,0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.BoundaryNorm(lev, 256)
# this is the contour plot, using extended_data so that the contours are plausibly extended
cs = plt.contourf(x,z,extended_data,levels = lev, cmap = cm.RdBu_r,norm = norml)
# now the attempt to cover it up -- but imshow will not cover up the original plot as it will with another image
bad_data = np.ma.masked_where(~data.mask, data.mask, copy=True)
plt.imshow(bad_data, interpolation='nearest', aspect = 'auto', cmap=cm.gray)
plt.show()
tôi nên thêm rằng kể từ khi bài này, tôi nhận ra rằng tôi có thể xác định khu vực và sử dụng fill() để chặn các khu vực. Vì vậy, mức độ khẩn cấp thấp hơn, mặc dù nó vẫn sẽ có giá trị để biết nếu điều này có thể được thực hiện. –
Giả sử bạn có một mảng 5x5 và chỉ mục [1, 1] bị thiếu, bạn sẽ thấy điều gì? Chỉ mục [1, 1] có được vẽ như một điểm đánh dấu không? – pelson
Bạn có thể đăng một ví dụ làm việc tối thiểu không? – EnricoGiampieri