matplotlib 색상 목록 만들기
15607 단어 파이썬matplotlib
소개
최근에는 취미라도 일이라도, 계산은 거의 Python으로 실시하고 있어 그래프화도 Python matplotlib로 실시하고 있다. 그래프에는 식별성을 높이기 위해, 색을 사용하게 되지만, matplotlib의 색 일람을 수중에 두고 싶다고 생각해, 색 일람의 화상을 작성했다.
작례
만드는 방법
이하를 참고로 matplotlib로 취급할 수 있는 색 일람을 취득한다. 사전 형식으로 색상 이름과 16진수 값을 얻을 수 있습니다.
matplotlib로 지정할 수있는 색상의 이름과 목록
그리고는 fill
를 사용해 지정한 구형 영역을 채워 갈 뿐이다.
그러나, 그래프 작성시에 이것을 참조해 색 지정을 실시하기 위해서는, 색명과 16진의 값을 텍스트 표시해 두고 싶다.
거기서 고민하는 것이, 색명과 16진의 텍스트의 표시색이다. 하나하나 지정해도 좋지만, 어떻게든 자동으로 표시색을 지정할 수 없는가 하는 것으로, HSV값을 사용하는 것으로.
제 경우 표시 색 지정에는 16 진을 사용하고 있지만 텍스트 표시 색을 결정하기 위해 16 진의 스트립 색을 한 번 RGB로 변환하고, 추가로 HSV로 변환하고 그 값에 따라 텍스트 표시 색을 결정하도록 했다.
텍스트 표시색을 결정하는 함수(def penc())는 다음과 같다. colorsys.rgb_to_hsv 라는 편리한 것이 있기 때문에, RGB에서 HSV로의 변환에는 이것을 사용하고 있다.
def penc(hval):
r=int(hval[1:3],16)
g=int(hval[3:5],16)
b=int(hval[6:8],16)
hsv=colorsys.rgb_to_hsv(r/255, g/255, b/255)
h=hsv[0]
s=hsv[1]
v=hsv[2]
col='#000000'
if 0.5<h: col='#ffffff'
if v<0.75: col='#ffffff'
return col
위의 예에서는 텍스트 표시 색을 먼저 검정(#000000)으로 지정하지만 HSV의 H가 0.5를 초과하고 V의 값이 0.75 미만인 경우 텍스트 표시 색을 흰색(#ffffff) 하고 싶다.
반대색을 사용하는 등의 방법도 생각했지만, 텍스트 표시색을 화려하게 하는 것도 저항이 있었기 때문에, 표시색은 흑과 백만으로 나누도록(듯이) 한 것이다.
프로그램 전문
import matplotlib
import colorsys
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'Ricty Diminished'
def penc(hval):
#https://docs.python.org/ja/3/library/colorsys.html
r=int(hval[1:3],16)
g=int(hval[3:5],16)
b=int(hval[6:8],16)
hsv=colorsys.rgb_to_hsv(r/255, g/255, b/255)
h=hsv[0]
s=hsv[1]
v=hsv[2]
col='#000000'
if 0.5<h: col='#ffffff'
if v<0.75: col='#ffffff'
return col
cdic=matplotlib.colors.cnames
lkey=[]
lval=[]
for key, val in zip(cdic.keys(), cdic.values()):
lkey=lkey+[key]
lval=lval+[val]
xmin=0
xmax=4
k=-1
fnameF='fig_col_mpl.png'
ymin=0
ymax=37
plt.figure(figsize=(6,12))
plt.xlim([xmin,xmax])
plt.ylim([ymax,ymin])
plt.axis('off')
fsize=8 # fontsize
k=-1
for i in range(int(ymin),int(ymax)):
for j in range(0,4):
k=k+1
if k<len(lval):
xs=float(j)
xe=xs+1.0
ys=float(i)
ye=ys+1.0
xx=[xs,xe,xe,xs]
yy=[ys,ys,ye,ye]
plt.fill(xx,yy,color=lval[k])
text1=lkey[k]
text2=lval[k]
xg=0.5*(xs+xe)
yg=0.5*(ys+ye)
col=penc(lval[k])
plt.text(xg,yg-0.25,text1,rotation=0,ha='center',va='center',fontsize=fsize,color=col)
plt.text(xg,yg+0.25,text2,rotation=0,ha='center',va='center',fontsize=fsize,color=col)
plt.savefig(fnameF, dpi=300, bbox_inches="tight", pad_inches=0)
그 이상
Reference
이 문제에 관하여(matplotlib 색상 목록 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/damyarou/items/f8af87a62681161afce5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
만드는 방법
이하를 참고로 matplotlib로 취급할 수 있는 색 일람을 취득한다. 사전 형식으로 색상 이름과 16진수 값을 얻을 수 있습니다.
matplotlib로 지정할 수있는 색상의 이름과 목록
그리고는 fill
를 사용해 지정한 구형 영역을 채워 갈 뿐이다.
그러나, 그래프 작성시에 이것을 참조해 색 지정을 실시하기 위해서는, 색명과 16진의 값을 텍스트 표시해 두고 싶다.
거기서 고민하는 것이, 색명과 16진의 텍스트의 표시색이다. 하나하나 지정해도 좋지만, 어떻게든 자동으로 표시색을 지정할 수 없는가 하는 것으로, HSV값을 사용하는 것으로.
제 경우 표시 색 지정에는 16 진을 사용하고 있지만 텍스트 표시 색을 결정하기 위해 16 진의 스트립 색을 한 번 RGB로 변환하고, 추가로 HSV로 변환하고 그 값에 따라 텍스트 표시 색을 결정하도록 했다.
텍스트 표시색을 결정하는 함수(def penc())는 다음과 같다. colorsys.rgb_to_hsv 라는 편리한 것이 있기 때문에, RGB에서 HSV로의 변환에는 이것을 사용하고 있다.
def penc(hval):
r=int(hval[1:3],16)
g=int(hval[3:5],16)
b=int(hval[6:8],16)
hsv=colorsys.rgb_to_hsv(r/255, g/255, b/255)
h=hsv[0]
s=hsv[1]
v=hsv[2]
col='#000000'
if 0.5<h: col='#ffffff'
if v<0.75: col='#ffffff'
return col
위의 예에서는 텍스트 표시 색을 먼저 검정(#000000)으로 지정하지만 HSV의 H가 0.5를 초과하고 V의 값이 0.75 미만인 경우 텍스트 표시 색을 흰색(#ffffff) 하고 싶다.
반대색을 사용하는 등의 방법도 생각했지만, 텍스트 표시색을 화려하게 하는 것도 저항이 있었기 때문에, 표시색은 흑과 백만으로 나누도록(듯이) 한 것이다.
프로그램 전문
import matplotlib
import colorsys
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'Ricty Diminished'
def penc(hval):
#https://docs.python.org/ja/3/library/colorsys.html
r=int(hval[1:3],16)
g=int(hval[3:5],16)
b=int(hval[6:8],16)
hsv=colorsys.rgb_to_hsv(r/255, g/255, b/255)
h=hsv[0]
s=hsv[1]
v=hsv[2]
col='#000000'
if 0.5<h: col='#ffffff'
if v<0.75: col='#ffffff'
return col
cdic=matplotlib.colors.cnames
lkey=[]
lval=[]
for key, val in zip(cdic.keys(), cdic.values()):
lkey=lkey+[key]
lval=lval+[val]
xmin=0
xmax=4
k=-1
fnameF='fig_col_mpl.png'
ymin=0
ymax=37
plt.figure(figsize=(6,12))
plt.xlim([xmin,xmax])
plt.ylim([ymax,ymin])
plt.axis('off')
fsize=8 # fontsize
k=-1
for i in range(int(ymin),int(ymax)):
for j in range(0,4):
k=k+1
if k<len(lval):
xs=float(j)
xe=xs+1.0
ys=float(i)
ye=ys+1.0
xx=[xs,xe,xe,xs]
yy=[ys,ys,ye,ye]
plt.fill(xx,yy,color=lval[k])
text1=lkey[k]
text2=lval[k]
xg=0.5*(xs+xe)
yg=0.5*(ys+ye)
col=penc(lval[k])
plt.text(xg,yg-0.25,text1,rotation=0,ha='center',va='center',fontsize=fsize,color=col)
plt.text(xg,yg+0.25,text2,rotation=0,ha='center',va='center',fontsize=fsize,color=col)
plt.savefig(fnameF, dpi=300, bbox_inches="tight", pad_inches=0)
그 이상
Reference
이 문제에 관하여(matplotlib 색상 목록 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/damyarou/items/f8af87a62681161afce5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def penc(hval):
r=int(hval[1:3],16)
g=int(hval[3:5],16)
b=int(hval[6:8],16)
hsv=colorsys.rgb_to_hsv(r/255, g/255, b/255)
h=hsv[0]
s=hsv[1]
v=hsv[2]
col='#000000'
if 0.5<h: col='#ffffff'
if v<0.75: col='#ffffff'
return col
import matplotlib
import colorsys
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'Ricty Diminished'
def penc(hval):
#https://docs.python.org/ja/3/library/colorsys.html
r=int(hval[1:3],16)
g=int(hval[3:5],16)
b=int(hval[6:8],16)
hsv=colorsys.rgb_to_hsv(r/255, g/255, b/255)
h=hsv[0]
s=hsv[1]
v=hsv[2]
col='#000000'
if 0.5<h: col='#ffffff'
if v<0.75: col='#ffffff'
return col
cdic=matplotlib.colors.cnames
lkey=[]
lval=[]
for key, val in zip(cdic.keys(), cdic.values()):
lkey=lkey+[key]
lval=lval+[val]
xmin=0
xmax=4
k=-1
fnameF='fig_col_mpl.png'
ymin=0
ymax=37
plt.figure(figsize=(6,12))
plt.xlim([xmin,xmax])
plt.ylim([ymax,ymin])
plt.axis('off')
fsize=8 # fontsize
k=-1
for i in range(int(ymin),int(ymax)):
for j in range(0,4):
k=k+1
if k<len(lval):
xs=float(j)
xe=xs+1.0
ys=float(i)
ye=ys+1.0
xx=[xs,xe,xe,xs]
yy=[ys,ys,ye,ye]
plt.fill(xx,yy,color=lval[k])
text1=lkey[k]
text2=lval[k]
xg=0.5*(xs+xe)
yg=0.5*(ys+ye)
col=penc(lval[k])
plt.text(xg,yg-0.25,text1,rotation=0,ha='center',va='center',fontsize=fsize,color=col)
plt.text(xg,yg+0.25,text2,rotation=0,ha='center',va='center',fontsize=fsize,color=col)
plt.savefig(fnameF, dpi=300, bbox_inches="tight", pad_inches=0)
그 이상
Reference
이 문제에 관하여(matplotlib 색상 목록 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/damyarou/items/f8af87a62681161afce5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)