Запись переменных в виде индексов в математическом режиме

Я пытаюсь построить некоторые данные, используя цикл for для построения распределений. Теперь я хочу пометить эти дистрибутивы в соответствии с счетчиком циклов как индекс в математической нотации. Вот где я сейчас нахожусь с этим.

import matplotlib.pyplot as plt import numpy as np import matplotlib.mlab as mlab mean = [10,12,16,22,25] variance = [3,6,8,10,12] x = np.linspace(0,40,1000) for i in range(4): sigma = np.sqrt(variance[i]) y = mlab.normpdf(x,mean[i],sigma) plt.plot(x,y,label=$v_i$) # where i is the variable i want to use to label. I should also be able to use elements from an array, say array[i] for the same. plt.xlabel("X") plt.ylabel("P(X)") plt.legend() plt.axvline(x=15, ymin=0, ymax=1,ls='--',c='black') plt.show() 

Это не работает, и я не могу сохранить переменную между знаками $ $ математической нотации, поскольку она интерпретируется как текст. Есть ли способ поместить переменную в нотацию $ $?

2 Solutions collect form web for “Запись переменных в виде индексов в математическом режиме”

Исходный вопрос был отредактирован, этот ответ был обновлен, чтобы отразить это.

При попытке работать с форматированием LaTeX в matplotlib вы должны использовать необработанные строки, обозначенные символом r"" .

Приведенный ниже код будет перебирать по range(4) и i'th с использованием i'th среднего и дисперсии (как вы изначально сделали). Он также устанавливает label для каждого графика с использованием label=r'$v_{}$'.format(i+1) . Это строковое форматирование просто заменяет {} на все, что вызывается внутри format , в этом случае i+1 . Таким образом, вы можете автоматизировать этикетки для своих участков.

Я удалил plt.axvline(...) , plt.xlabel(...) и plt.ylabel(...) из цикла for поскольку вам нужно только позвонить ему один раз. Я также удалил plt.legend() из цикла for по той же причине и удалил свои аргументы. Если вы plt.plot() label аргументов ключевого слова на plt.plot() вы можете пометить свои сюжеты индивидуально по мере их plt.plot() .

 import matplotlib.pyplot as plt import numpy as np import matplotlib.mlab as mlab mean = [10,12,16,22,25] variance = [3,6,8,10,12] x = np.linspace(0,40,1000) for i in range(4): sigma = np.sqrt(variance[i]) y = mlab.normpdf(x,mean[i],sigma) plt.plot(x,y, label=r'$v_{}$'.format(i+1)) plt.xlabel("X") plt.ylabel("P(X)") plt.axvline(x=15, ymin=0, ymax=1,ls='--',c='black') plt.legend() plt.show() 

участок

Получается, что вы отредактировали свой вопрос на основе моего ответа. Однако вы все еще не совсем там. Если вы хотите сделать это так, как я думаю, вы хотите его закодировать, это должно быть так:

 import matplotlib.pyplot as plt import numpy as np import matplotlib.mlab as mlab mean = [10, 12, 16, 22, 25] variance = [3, 6, 8, 10, 12] x = np.linspace(0, 40, 1000) for i in range(4): sigma = np.sqrt(variance[i]) y = mlab.normpdf(x, mean[i], sigma) plt.plot(x, y, label = "$v_{" + str(i) + "}$") plt.xlabel("X") plt.ylabel("P(X)") plt.legend() plt.axvline(x = 15, ymin = 0, ymax = 1, ls = '--', c = 'black') plt.show() 

Этот код генерирует следующий рисунок: введите описание изображения здесь Если вы хотите, чтобы первый график начинался с v_1 вместо v_0, все, что вам нужно изменить, это str(i+1) . Таким образом, индексы 1, 2, 3 и 4 вместо 0, 1, 2 и 3.

Надеюсь это поможет!

Interesting Posts

Метакласса Python и базовый класс объекта

объединить несколько строк в одну строку в пандах

Python / Pandas – графический интерфейс для просмотра DataFrame или Matrix

Я хочу использовать matplotlib в osx lion

Как развернуть приложение Python с библиотеками в качестве источника без каких-либо дополнительных зависимостей?

python рисовать фигуры пирога с заполненным цветом

python pandas: график гистограмм дат?

Как переопределить теги POS, назначенные тексту, по умолчанию nltk?

Выбор полей из выхода JSON

UnicodeEncodeError: кодек ascii не может кодировать символы в позиции 0-6: порядковый номер не в диапазоне (128)

Создание класса формы Django с динамическим числом полей

Как анализировать несколько дат из блока текста в Python (или на другом языке)

Сценарий Python, не выполняющийся в Light Table, показывает ошибку

Установка правильной кодировки при отправке stdout в Python

Как все () в python работает в пустых списках

Python - лучший язык программирования в мире.