Установка глобального "legend.loc" для matplotlib с использованием rcParams? - PullRequest
0 голосов
/ 20 мая 2018

Я должен построить довольно много графиков, и для всех них мне нужно сказать legend, чтобы найти лучшую позицию:

plt.legend(loc="best")

Однако я думаю, что это не очень хорошоИдея вызывать эту функцию для каждого отдельного фрагмента кода, генерирующего фигуры.

Возможно ли установить это в начале скрипта Python, используя rcParams или rc?Я попробовал это с самого начала, но ни один из них не работал:

rcParams['legend.loc'] = "best"

rc('legend', loc="best")

В целом, существует ли идиоматический способ установки глобальных настроек matplotlib, чтобы я мог уменьшить количество повторяющихся кодов конфигурации фигуры?

1 Ответ

0 голосов
/ 20 мая 2018

Непонятно, почему ваша команда rcParams['legend.loc'] = "best" не влияет на следующие цифры.Как видите, он работает, как и ожидалось, в следующем коде:

import numpy as np
from matplotlib import pyplot as plt

#possible legend locations
leg_loc = {0: "best",
           1: "upper right",
           2: "upper left",
           3: "lower left",
           4: "lower right",
           5: "right",
           6: "center left",
           7: "center right",
           8: "lower center",
           9: "upper center",
           10: "center"}

#random legend location
loc_num = np.random.randint(10)
#set it for all following figures
plt.rcParams['legend.loc'] = leg_loc[loc_num]

#create three figures with random data
n = 10
xdata = np.arange(n)

for i in range(3):
    plt.figure(i)
    ydata = np.random.random(n)
    #set some points in right upper corner, in case legend location is "best"
    if i == 1:
        ydata[-3:] = 0.98
    plt.scatter(xdata, ydata, label = "data #{}\nlegend location: {}".format(i, leg_loc[loc_num]))
    plt.legend()

plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...