Dzięki za oddanie razem prosty przykład problemu - to naprawdę sprawia, że śledztwo to o wiele łatwiejsze!
Czy istnieje rozwiązanie tego problemu?
Tak, okazuje się, że jest! Moje początkowe przypuszczenie, po prostu patrząc na obraz, który dołączyłeś, było takie, że działo się dziwne przycinanie/przyciąganie. Po wykluczeniu możliwości antyaliasingu (przez przesuwanie przełącznika, który podałeś) moją jedyną inną drogą testowania było ustawienie słowa kluczowego "przyciąganie" na wartość fałsz (dla bardzo ograniczonych dokumentów w metodzie przyciągania zobacz http://matplotlib.org/api/artist_api.html#matplotlib.artist.Artist.set_snap).
Ustawienie przystawki załatwia sprawę i skończyć z oczekiwanych rezultatów:
import matplotlib.pyplot as plt
import matplotlib.patches as patches
ax = plt.axes()
for x in range(-10,11):
for y in range(-10,11):
rect = patches.Rectangle((x, y), width=0.1, height=0.1,
color='k', snap=False)
ax.add_patch(rect)
plt.xlim([-30, 30])
plt.ylim([-30, 30])
plt.show()
wizualne porównanie (prawdopodobnie najlepszy otwierając zdjęcie w nowym oknie jak przeglądarka prawdopodobnie skalowanie obrazu i wprowadzić dalsze Efekty wizualne):
nie jestem szczególnie wiedzę na temat własności guzikiem w MPL i czy to jest naprawdę pożądane zachowanie, więc będę zadać pytanie na MPL-devel listę mailingową, aby otworzyć rozmowę na temat tego pytania. Mam nadzieję, że ta odpowiedź pomoże ci w międzyczasie.
Mam również ten problem. To nie pomoże twojej interaktywnej sesji, ale za to, co jest warte, jeśli zapisujesz obraz w wektoryzowanym formacie, tj. 'Plt.save (" a.pdf ")' wynikowy plik PDF nie cierpi z powodu tych samych artefaktów. – Hooked
Ustawienie 'ec = 'none'' może trochę pomóc:' rect = patches.Rectangle ((x, y), width = 1, height = 1, color =' k ', ec =' none ') ' –
Nie mogłem odtworzyć tego problemu. Zapisane jako png i jako jpg z matplotlib 1.1.1 na OS X, a wynik był w porządku. – tiago