Короткий ответ: вы можете использовать bbox_to_anchor
+ bbox_extra_artists
+ bbox_inches='tight'
.
Более длинный ответ: вы можете использовать bbox_to_anchor
, чтобы вручную указать расположение окна легенды, как указывали некоторые другие люди в ответах.
Однако обычная проблема заключается в том, что поле легенды обрезается, например:
import matplotlib.pyplot as plt
# data
all_x = [10,20,30]
all_y = [[1,3], [1.5,2.9],[3,2]]
# Plot
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.plot(all_x, all_y)
# Add legend, title and axis labels
lgd = ax.legend( [ 'Lag ' + str(lag) for lag in all_x], loc='center right', bbox_to_anchor=(1.3, 0.5))
ax.set_title('Title')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
fig.savefig('image_output.png', dpi=300, format='png')
[/g1]
Чтобы предотвратить когда вы сохраняете фигуру, вы можете использовать параметры bbox_extra_artists
и bbox_inches
, чтобы спросить savefig
включить обрезанные элементы в сохраненное изображение:
fig.savefig('image_output.png', bbox_extra_artists=(lgd,), bbox_inches='tight')
Пример (я только изменил последнюю строку, чтобы добавить 2 параметра к fig.savefig()
):
import matplotlib.pyplot as plt
# data
all_x = [10,20,30]
all_y = [[1,3], [1.5,2.9],[3,2]]
# Plot
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.plot(all_x, all_y)
# Add legend, title and axis labels
lgd = ax.legend( [ 'Lag ' + str(lag) for lag in all_x], loc='center right', bbox_to_anchor=(1.3, 0.5))
ax.set_title('Title')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
fig.savefig('image_output.png', dpi=300, format='png', bbox_extra_artists=(lgd,), bbox_inches='tight')
[/g2]
Желаю matplotlib предположительно разрешил бы внешнее местоположение для окна легенды, поскольку Matlab делает :
figure
x = 0:.2:12;
plot(x,besselj(1,x),x,besselj(2,x),x,besselj(3,x));
hleg = legend('First','Second','Third',...
'Location','NorthEastOutside')
% Make the text of the legend italic and color it brown
set(hleg,'FontAngle','italic','TextColor',[.3,.2,.1])
[/g3]
В Windows:
CHDIR Отображает имя или изменяет текущий каталог.
В Linux:
PWD Отображает имя текущего каталога.
Это всегда срабатывало для меня:
SET CurrentDir="%~dp0"
ECHO The current file path this bat file is executing in is the following:
ECHO %CurrentDir%
Pause
Почему люди слишком усложняют это?
Существует два простых метода, и оба они связаны с модулем «os». Вы можете использовать:
os.system("cd")
или
print(os.getcwd())
Желаем удачи!
Основываясь на следующем вопросе (храня данные в переменной) в комментариях к сообщению chdir, я уверен, что он хочет сохранить текущий путь для его восстановления после смены каталогов.
оригинальный пользователь должен посмотреть на «pushd», который меняет каталог и толкает текущий в стек, который можно восстановить с помощью «popd». На любой современной Windows CMD-оболочке, которая подходит для создания пакетных файлов.
Если вам действительно нужно захватить текущий путь, то в современных CMD-оболочках также есть переменная% CD%, которую вы можете легко набрать в другой переменной для ссылки.
Для Windows, cd
сам покажет вам текущий рабочий каталог.
Для UNIX и рабочих систем, pwd
выполнит ту же задачу. Вы также можете использовать переменную оболочки $PWD
в некоторых оболочках. Я не уверен, поддерживает ли Windows получение текущего рабочего каталога через переменную оболочки или нет.
@for /f "usebackq" %%x in (`chdir`) do set var=%%x
@echo "The currenct directory is: %var%"
Но, конечно, , ответ gmaran23 намного проще.
В командной строке Windows chdir
или cd
выведет полный путь к текущему рабочему каталогу в консоли. Если мы хотим скопировать путь, мы можем использовать: cd | clip
.
Спасибо.
В Windows Type cd
для текущего текущего пути в Linux pwd
Для текущего рабочего пути
Вы можете установить переменную batch / environment следующим образом:
SET var=%cd%
ECHO %var%
пример скриншота из Windows 7 x64 cmd.exe.
[/g2]
Обновление: , если вы выполняете SET var = %cd%
вместо SET var=%cd%
, то происходит то, что происходит. Благодаря jeb.
[/g3]