부분적으로 문자열의 색상을 지정하는 방법이 matplotlib에 있습니까?matplotlib의 텍스트 부분 컬러링
는예 : 내가 빨간색으로 "오늘"을 보여줄 수있는 방법
plt.ylabel("Today is cloudy.")
로 녹색과 "구름." "입니다" 파란색으로?
감사합니다.
부분적으로 문자열의 색상을 지정하는 방법이 matplotlib에 있습니까?matplotlib의 텍스트 부분 컬러링
는예 : 내가 빨간색으로 "오늘"을 보여줄 수있는 방법
plt.ylabel("Today is cloudy.")
로 녹색과 "구름." "입니다" 파란색으로?
감사합니다.
이 방법은 비대화 형으로 만 수행 할 수 있으며, 'PS'백엔드에서만 사용할 수 있습니다.
이렇게하려면 텍스트 서식을 지정하기 위해 라텍스를 사용합니다. 그런 다음 '색상'패키지를 포함시키고 원하는대로 색상을 설정합니다. 여기
이 일의 예입니다 이 결과import matplotlib
matplotlib.use('ps')
from matplotlib import rc
rc('text',usetex=True)
rc('text.latex', preamble='\usepackage{color}')
import matplotlib.pyplot as plt
plt.figure()
plt.ylabel(r'\textcolor{red}{Today} '+
r'\textcolor{green}{is} '+
r'\textcolor{blue}{cloudy.}')
plt.savefig('test.ps')
(ImageMagick이를 사용하여 PNG로 PS로 변환, 그래서 여기에 게시 할 수) : 이
PDF 백엔드와 만 작동하는 경우이 코드를 사용합니다 :) 어떤 이유로 든 제대로 축을 배치 할 수 없습니다. 내가 ps 백엔드로 작업하는 동안 캔버스. –
죄송합니다 - 나는 이것을 downvote 것을 의미하지는 않습니다. 나는 그것을 upvote 의미하고, 내가 일찍 misclicked해야합니다. – mixedmath
아주 좋은 해결책입니다. ''''''''''''''''를 만드는 방법이 있습니까? ps '와 ps2pdf로 저장하는 것 이외에, 내 그래프의 모든 것들을 망쳐 놓습니다. –
여기에 대화 형 버전이다 (내가 the list에 게시 동일 하나)
import matplotlib.pyplot as plt
from matplotlib import transforms
def rainbow_text(x,y,ls,lc,**kw):
"""
Take a list of strings ``ls`` and colors ``lc`` and place them next to each
other, with text ls[i] being shown in color lc[i].
This example shows how to do both vertical and horizontal text, and will
pass all keyword arguments to plt.text, so you can set the font size,
family, etc.
"""
t = plt.gca().transData
fig = plt.gcf()
plt.show()
#horizontal version
for s,c in zip(ls,lc):
text = plt.text(x,y," "+s+" ",color=c, transform=t, **kw)
text.draw(fig.canvas.get_renderer())
ex = text.get_window_extent()
t = transforms.offset_copy(text._transform, x=ex.width, units='dots')
#vertical version
for s,c in zip(ls,lc):
text = plt.text(x,y," "+s+" ",color=c, transform=t,
rotation=90,va='bottom',ha='center',**kw)
text.draw(fig.canvas.get_renderer())
ex = text.get_window_extent()
t = transforms.offset_copy(text._transform, y=ex.height, units='dots')
plt.figure()
rainbow_text(0.5,0.5,"all unicorns poop rainbows ! ! !".split(),
['red', 'orange', 'brown', 'green', 'blue', 'purple', 'black'],
size=40)
,
단어가 세로 버전에서 정확하게 정렬되지 않은 것 같습니다. – Alex
사실이 코멘트를 작성했을 때 matplotlib의 버그였습니다. 이후 [여기] (http://matplotlib.org/examples/text_labels_and_annotations/rainbow_text.html)에서 볼 수 있듯이 수정되었습니다. –
지금 also works with PDF export 얀의 대답, LaTeX의 색상 확장이 파이썬 스크립트가 때때로 첫 번째 시도에서 Undefined control sequence
오류와 함께 실패
import matplotlib
from matplotlib.backends.backend_pgf import FigureCanvasPgf
matplotlib.backend_bases.register_backend('pdf', FigureCanvasPgf)
import matplotlib.pyplot as plt
pgf_with_latex = {
"text.usetex": True, # use LaTeX to write all text
"pgf.rcfonts": False, # Ignore Matplotlibrc
"pgf.preamble": [
r'\usepackage{color}' # xcolor for colours
]
}
matplotlib.rcParams.update(pgf_with_latex)
plt.figure()
plt.ylabel(r'\textcolor{red}{Today} '+
r'\textcolor{green}{is} '+
r'\textcolor{blue}{cloudy.}')
plt.savefig("test.pdf")
참고. 다시 실행하면 성공합니다.
3 개의 텍스트 상자로 해킹해야 할 것 같습니다. – wim
matplotlib 메일 링리스트에 문의하십시오. 아마도 사용자 정의 렌더러 또는 "아티스트"에서 가능할 수 있습니다. –
https://github.com/matplotlib/matplotlib/issues/697 –