Низкая точность при построении клина небольшого размера по сравнению с размером оси.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Низкая точность при построении клина небольшого размера по сравнению с размером оси.

Сообщение Anonymous »

Я пытаюсь воссоздать графики на этом сайте: https://bumps.live/torpids/2022. Я использую matplotlib и столкнулся с проблемой при рисовании логотипов, которые я воссоздал с помощью MWE ниже. Я рисую два полукруга рядом друг с другом, и результат такой же, как и ожидалось, когда они примерно того же размера, что и ось, но когда они намного меньше, происходит потеря точности, и полукруги больше не занимают пространство половины круг. Радиус обоих полукругов на следующих двух рисунках равен 0,1, но первый рисунок имеет пределы оси от -0,15 до 0,15, а второй рисунок имеет пределы от -10 до 10 (правый рисунок я увеличил). При использовании plt.show и увеличении масштаба эта проблема не возникает.
[img]https://i.sstatic.net /9QZuCYUK.png[/img]

Изображение

Я предполагаю, что matplotlib определил клинья с подходящей степенью точности, предполагая, что никто не увеличивает масштаб, хотя, поскольку я увеличиваю масштаб, этого недостаточно. Я спросил ChatGPT, и он предложил добавитьresolution=100 kwarg для моих клиньев, но это, кажется, устарело или что-то в этом роде, так как это приводит к ошибке. Я использую Python 3.12.3 и matplotlib 3.9.1.post1. Мне нужно будет создать около 350 логотипов, и я был бы готов добавить их в формате SVG, если производительность будет достаточно хорошей, в качестве плана резервного копирования, но в идеале я хотел бы понять, как решить эту проблему.
import matplotlib.pyplot as plt
from matplotlib.patches import Wedge

fig, ax = plt.subplots(figsize=(5, 5))

radius = 0.1
left_semicircle = Wedge((0, 0), radius, 0, 180, color="r")
right_semicircle = Wedge((0, 0), radius, 180, 360, color="b")

ax.add_patch(left_semicircle)
ax.add_patch(right_semicircle)

axis_limit = 0.15
axis_limit = 10
ax.set_xlim((-axis_limit, axis_limit))
ax.set_ylim((-axis_limit, axis_limit))
ax.set_aspect('equal')

plt.savefig(f"TwoSemicircles_{axis_limit}.pdf")


Подробнее здесь: https://stackoverflow.com/questions/790 ... -axis-size
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»