Создайте подробный график SVG с помощью Matplotlib - PullRequest
0 голосов
/ 04 февраля 2020

Я использую библиотеку Python matplotlib, чтобы нарисовать график с большим количеством данных. После выполнения plt.show() я могу увеличить масштаб и увидеть детали графика. Тем не менее, я хотел бы сохранить график в SVG-файл с plt.savefig и увидеть эти детали, которые по умолчанию не видны в стандартном представлении без увеличения. Как я могу это сделать?

Обратите внимание, что увеличение DPI или дюйм-дюймовых измерений не имеет смысла при работе с форматами векторной графики, такими как файл svg.

В качестве примера рассмотрим следующее Программа.

import matplotlib.pyplot as plt
import numpy as np
import math

x = np.arange(0,100,0.00001)
y = x*np.sin(2*math.pi*(x**1.2))
plt.plot(y)
plt.savefig('test.svg')

Мы получим следующий график, который, даже когда мы масштабируем, мы не можем видеть детали периодов синусоиды. enter image description here

Но мы можем видеть детали синусоидальной волны при отображении изображения вместо plt.show и затем при увеличении. enter image description here

1 Ответ

1 голос
/ 04 февраля 2020

В качестве обходного пути можно добавить размер фигуры:

import matplotlib.pyplot as plt
import numpy as np
import math

x = np.arange(0,100,0.00001)
y = x*np.sin(2*math.pi*(x**1.2))
fig = plt.figure(figsize=(19.20,10.80))

plt.plot(y)
plt.savefig('test.svg')

, и вы получите вид разрешения, который вам понадобится sh.


Как правильно заметил Йохан C, еще одно хорошее решение - уменьшить ширину линии:

import matplotlib.pyplot as plt
import numpy as np
import math

x = np.arange(0,100,0.00001)
y = x*np.sin(2*math.pi*(x**1.2))
#fig = plt.figure(figsize=(19.20,10.80))

plt.plot(y, linewidth=0.1)
plt.savefig('test.svg')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...