2017-12-20 36 views
0

매번 코드를 실행할 때 y 축의 라벨이 한 플롯에서 다음 플롯으로 약간 다른 많은 플롯을 만들고 있습니다. 코드가 길기 때문에 같은 레이블의 부분이 선험적으로 인식되도록 단일 실행으로 모든 플롯을 생성하는 것을 선호합니다. 나는 format() 파이썬에서이 알려진 값이 주어진 각 플롯에 대한 레이블을 인쇄하는 기능을 사용하려고합니다. 내 축 레이블 안에 라텍스 표기법을 사용하고 있기 때문에 문제를 해결하는 방법을 모르겠습니다.인수가 format() 함수에 전달 된 변수 일 때 플롯의 y 축에 레이블을 지정하는 방법은 무엇입니까?

z_value = 0. 
ax.set_ylabel(r'$\frac {dN_{{abs.}}} {d [\log(m_{{sub}})]} (m_{{sub}}, z={:.1f})$'.format(z_value)) 

오류 :

ax.set_ylabel(r'$\frac {dN_{{abs.}}} {d [\log(m_{{sub}})]} (m_{{sub}}, z={:.1f})$'.format(z_value))

ValueError: unexpected '{' in field name

답변

1

당신은 두 번해야합니다 포맷의 지표로 사용하지 않는 각 {및}. 백 슬래시를 벗어날 필요가 있습니다.

>>> x=2.5 
>>> print('Dies ist {{{}x eine Variable'.format(x)) 
Dies ist {2.5x eine Variable 

>>> print('$\\frac {{dN_{{abs.}}}} {{d [\\log(m_{{sub}})]}} (m_{{{{sub}}}}, z={:.1f})$'.format(x)) 
$\frac {dN_{abs.}} {d [\log(m_{sub})]} (m_{{sub}}, z=2.5)$ 
+0

위대한 교훈입니다. 감사, – Allan