2016-09-26 5 views
0

У меня есть три линии, задающие сюжет. Я ожидаю, что размер pic.png будет 640x640 пикселей. Но у меня получилось изображение 800х800.Как установить размер для диаграммы рассеяния

plt.figure(figsize=(8, 8), dpi=80) 
plt.scatter(X[:],Y[:]) 
plt.savefig('pic.png') 

BTW У меня нет проблем с настройкой размера с объектно-ориентированным интерфейсом, но мне нужно использовать стиль pyplot.

ответ

0

Следующий код создает 576x576 PNG изображение в моей машине:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.arange(10) 
y = np.random.rand(10) 

plt.figure(figsize=(8, 8), dpi=80) 
plt.scatter(x, y) 
plt.savefig('pic.png') 

Shifting dpi=80 на plt.savefig вызов правильно приводит к 640x640 PNG изображения:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.arange(10) 
y = np.random.rand(10) 

plt.figure(figsize=(8, 8)) 
plt.scatter(x, y) 
plt.savefig('pic.png', dpi=80) 

Я не могу предложить какой-либо объяснение того, почему это происходит.

4

В то время как ответ Альберто дает вам правильную работу, взгляд на documentation for plt.savefig дает вам представление о том, почему это происходит.

dpi: [Нет | скаляр> 0 | 'Figure'] Разрешение в точках на дюйм. Если None, то значение по умолчанию для файла savefig.dpi будет установлено в файле matplotlibrc. Если «цифра», то значение dpi будет считаться значением dpi.

Короткий ответ: использование plt.savefig(..., dpi='figure') использовать значение точек на дюйм установить при создании фигуры.

Более длинный ответ: с plt.figure(figsize=(8,8), dpi=80), вы можете получить 640x640 фигуру следующим образом:

  1. Pass аргумент dpi='figure' ключевое слово, чтобы plt.savefig:

    plt.figure(figsize=(8, 8), dpi=80) 
    ... 
    plt.savefig('pic.png', dpi='figure') 
    
  2. Явное Отдайте savefig:

    plt.figure(figsize=(8, 8)) 
    ... 
    plt.savefig('pic.png', dpi=80) 
    
  3. редактировать свои matplotlibrc file на следующей строке:

    #figure.dpi  : 80  # figure dots per inch 
    

    затем

    plt.figure(figsize=(8, 8)) 
    ... 
    plt.savefig('pic.png') #dpi=None implicitly defaults to rc file value 
    
+0

Я подозревал, как много. Я думаю, у поддерживающих matplotlib есть веские причины для такого поведения. Я бы сделал «фигуру» по умолчанию. Спасибо за информацию, хотя! –

Смежные вопросы