Я действительно очень доволен как сюжет вышел. Всю необходимую мне функциональность можно найти в matplotlib.
Основная (и довольно серьезная) проблема связана с масштабом. Когда я сохраняю это в формате PDF, размер каждого квадрата составляет около 0,75 см, тогда как должен быть 1 см. Это отражено и в сюжете, например. расстояние между p0 и p1 должно составлять 41,5 см, а фактическая длина в экспортированном документе – 31,8 см.
Я прикрепил небольшой снимок экрана с фрагментом графика.
Ниже показано, как я сохраняю график в формате PDF.
Буду признателен за любые советы.
Код: Выделить всё
# Marking lines
fig, ax = plt.subplots()
# Setting plot limits and equal aspect ratio
ax.set_xlim(-1, 20)
ax.set_ylim(-2, 85)
ax.set_aspect('equal')
# Add grid lines for 1 cm squares
# To convert from data units to cm units, you need to know the figure size and dpi
fig_width_cm = fig.get_size_inches()[0] * 2.54 # convert from inches to cm
fig_height_cm = fig.get_size_inches()[1] * 2.54
# Assuming a dpi of 300
dpi = 300
x_ticks = np.arange(-1, 20, 1)
y_ticks = np.arange(-2, 85, 1)
ax.set_xticks(x_ticks)
ax.set_yticks(y_ticks)
# Showing grid and inverting y-axis
ax.grid(True)
plt.gca().invert_yaxis()
# Define DPI (dots per inch)
dpi = 300
# Convert axis limits to inches
x_range_in_inches = (21 / 2.54) # Conversion from cm to inches
y_range_in_inches = (87 / 2.54) # Conversion from cm to inches
# Set the figure size based on the axis limits
fig.set_size_inches(x_range_in_inches, y_range_in_inches, forward=True)
# Save the figure with only the visible area
file_path = 'E:/#DOCUMENTS/#Code/high_resolution_plot.pdf'
fig.savefig(file_path, dpi=dpi, bbox_inches='tight', pad_inches=0.1, transparent=True)
# Display the plot
plt.show()
plt.close(fig)
Подробнее здесь: https://stackoverflow.com/questions/793 ... matplotlib
Мобильная версия