Установить метку оси автоматически - PullRequest
0 голосов
/ 04 мая 2018

Есть ли способ автоматически установить метки оси графика в соответствии с именем, которое переменные имеют в коде. Например:

import matplotlib.pyplot as plt    
import numpy as np
x_variable=np.linspace(1,5)
y_variable=x_variable**2
plt.plot(x_variable,y_variable)
some_function()

есть ли способ добавить some_function () к этому коду, чтобы результат для этого примера был эквивалентен:

plt.xlabel('x_variable')
plt.ylabel('y_variable')

Ответы [ 2 ]

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

В вашем случае x_variable и y_variable - это массивы numpy, так как вы используете их для построения на matplotlib.

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

import matplotlib.pyplot as plt    
import numpy as np

def Return_variable_name_as_string(myVar):
    return [ k for k,v in globals().iteritems() if np.array_equal(v,myVar)][0]

x_variable=np.linspace(1,5)
y_variable=x_variable**2
plt.plot(x_variable,y_variable)
plt.xlabel(Return_variable_name_as_string(x_variable))
plt.ylabel(Return_variable_name_as_string(y_variable))

Возможно, вам придется изменить globals на locals, но это будет зависеть от того, как вы используете его в вашем деле.

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

Не совсем. Однако вы можете использовать словарь для хранения значений и использовать ключи в качестве меток.

import matplotlib.pyplot as plt    
import numpy as np
data = {}
x = 'x_variable'
y = 'y_variable'
data[x] = np.linspace(1,5)
data[y] = x_variable**2
plt.plot(data[x], data[y])

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