Вы можете сделать это с помощью функции reshape()
или с функциями melt()
/ cast()
в пакете reshape. Для второго варианта пример кода:
library(reshape)
cast(dat1, name ~ numbers)
Или с помощью reshape2
library(reshape2)
dcast(dat1, name ~ numbers)
Во-первых, что происходит, когда T0 is not None
? Я бы проверил это, тогда я бы отрегулировал значения, которые я передаю, на plt.subplot()
; возможно, значения 131, 132 и 133, или значения, зависящие от того, существует или нет T0
.
Во-вторых, после вызова plt.show()
создается новая фигура. Чтобы справиться с этим, вы можете
plt.savefig('tessstttyyy.png', dpi=100)
, прежде чем вы назовете plt.show()
show()
, вызвав plt.gcf()
для «get текущая цифра ", тогда вы можете вызвать savefig()
на этом объекте Figure
в любое время. Например:
fig1 = plt.gcf()
plt.show()
plt.draw()
fig1.savefig('tessstttyyy.png', dpi=100)
В вашем коде ' tesssttyyy.png 'пуст, потому что он сохраняет новую фигуру, на которую ничего не было построено.
plt.show()
должен появиться после plt.savefig()
plt.show()
очищает все это, поэтому что-нибудь потом произойдет на новой пустой фигуре.
– luckydonald
19 June 2018 в 13:40
позвольте мне привести более подробный пример:
import numpy as np
import matplotlib.pyplot as plt
def draw_result(lst_iter, lst_loss, lst_acc, title):
plt.plot(lst_iter, lst_loss, '-b', label='loss')
plt.plot(lst_iter, lst_acc, '-r', label='accuracy')
plt.xlabel("n iteration")
plt.legend(loc='upper left')
plt.title(title)
plt.savefig(title+".png") # should before plt.show method
plt.show()
def test_draw():
lst_iter = range(100)
lst_loss = [0.01 * i + 0.01 * i ** 2 for i in xrange(100)]
# lst_loss = np.random.randn(1, 100).reshape((100, ))
lst_acc = [0.01 * i - 0.01 * i ** 2 for i in xrange(100)]
# lst_acc = np.random.randn(1, 100).reshape((100, ))
draw_result(lst_iter, lst_loss, lst_acc, "sgd_method")
if __name__ == '__main__':
test_draw()
jupyter
ноутбуках с включенным%matplotlib inline
: вызовsavefig
должен находиться в той же ячейке, что и способ создания графика. – ijoseph 6 January 2018 в 02:31plt.show()
создает новое изображение. Действительно, это решило проблему. – user989762 15 August 2018 в 08:21