기본 라인 색상 주기 가져오기
첫 번째 줄은 파란색, 다음 줄은 주황색, 다음 줄은 녹색 등으로 표시됩니다.
이 색상 목록에 액세스할 수 있는 방법이 있습니까?저는 색상 주기를 변경하거나 반복기에 액세스하는 방법에 대한 수백만 개의 게시물을 보았습니다. 하지만 기본적으로 matplotlib 주기를 통과하는 색상 목록을 얻는 방법은 아닙니다.
matplotlib 버전 >= 1.5에서 다음을 인쇄할 수 있습니다.rcParam
불렀다axes.prop_cycle
:
print(plt.rcParams['axes.prop_cycle'].by_key()['color'])
# [u'#1f77b4', u'#ff7f0e', u'#2ca02c', u'#d62728', u'#9467bd', u'#8c564b', u'#e377c2', u'#7f7f7f', u'#bcbd22', u'#17becf']
또는 동등하게,python2
:
print plt.rcParams['axes.prop_cycle'].by_key()['color']
버전 < 1.5에서 이것은 다음과 같이 불렸습니다.color_cycle
:
print plt.rcParams['axes.color_cycle']
# [u'b', u'g', u'r', u'c', u'm', u'y', u'k']
기본 색상 주기는 버전 2.0.0 http://matplotlib.org/users/dflt_style_changes.html#colors-in-default-property-cycle 에서 변경되었습니다.
대부분의 경우 기본 색상 주기이기 때문에 어디서든 기본 색상 주기를 가져올 필요가 없으므로 사용하기만 하면 충분합니다.
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
t = np.arange(5)
for i in range(4):
line, = ax.plot(t,i*(t+1), linestyle = '-')
ax.plot(t,i*(t+1)+.3,color = line.get_color(), linestyle = ':')
plt.show()
다른 용도로 기본 색상 주기를 사용하려는 경우 여러 가지 옵션이 있습니다.
"tab10" 컬러 지도
먼저 언급해야 할 것은"tab10"
컬러맵은 기본 컬러 사이클의 색상으로 구성되며, 다음을 통해 얻을 수 있습니다.cmap = plt.get_cmap("tab10")
.
따라서 위와 동등한 것은 다음과 같습니다.
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
t = np.arange(5)
cmap = plt.get_cmap("tab10")
for i in range(4):
ax.plot(t,i*(t+1), color=cmap(i), linestyle = '-')
ax.plot(t,i*(t+1)+.3,color=cmap(i), linestyle = ':')
plt.show()
색상 주기의 색상
컬러 사이클러를 직접 사용할 수도 있습니다.cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']
반복하는 데 사용할 수 있는 주기의 색상이 포함된 목록이 제공됩니다.
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
t = np.arange(5)
cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']
for i in range(4):
ax.plot(t,i*(t+1), color=cycle[i], linestyle = '-')
ax.plot(t,i*(t+1)+.3,color=cycle[i], linestyle = ':')
plt.show()
그CN
표기법
마지막으로,CN
표기법은 다음을 얻을 수 있습니다.N
컬러 사이클의 색상,color="C{}".format(i)
그러나 이것은 처음 10가지 색상에만 적용됩니다.N in [0,1,...9]
)
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
t = np.arange(5)
for i in range(4):
ax.plot(t,i*(t+1), color="C{}".format(i), linestyle = '-')
ax.plot(t,i*(t+1)+.3,color="C{}".format(i), linestyle = ':')
plt.show()
여기에 표시된 모든 코드는 동일한 그림을 생성합니다.
CN 표기법이 재검토되었습니다.
저는 Matplotlib의 새로운 개발에 대해 이야기하고 싶습니다.이전 답변에서 우리는 읽었습니다.
마지막으로,
CN
표기법은 다음을 얻을 수 있습니다.N
컬러 사이클의 색상,color="C{}".format(i)
그러나 이것은 처음 10가지 색상에만 적용됩니다.N in [0,1,...9]
)
그렇지만
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0,6.28, 629)
for N in (1, 2):
C0N, C1N = 'C%d'%(N), 'C%d'%(N+10)
plt.plot(t, N*np.sin(t), c=C0N, ls='-', label='c='+C0N)
plt.plot(t, N*np.cos(t), c=C1N, ls='--', label='c='+C1N)
plt.legend() ; plt.grid() ; plt.show()
기브즈
matplotlib이 선에 사용하는 RGB 색상을 얻기 위해 빠른 원라이너를 찾고 있다면 다음과 같습니다.
>>> import matplotlib; print('\n'.join([str(matplotlib.colors.to_rgb(c)) for c in matplotlib.pyplot.rcParams['axes.prop_cycle'].by_key()['color']]))
(0.12156862745098039, 0.4666666666666667, 0.7058823529411765)
(1.0, 0.4980392156862745, 0.054901960784313725)
(0.17254901960784313, 0.6274509803921569, 0.17254901960784313)
(0.8392156862745098, 0.15294117647058825, 0.1568627450980392)
(0.5803921568627451, 0.403921568627451, 0.7411764705882353)
(0.5490196078431373, 0.33725490196078434, 0.29411764705882354)
(0.8901960784313725, 0.4666666666666667, 0.7607843137254902)
(0.4980392156862745, 0.4980392156862745, 0.4980392156862745)
(0.7372549019607844, 0.7411764705882353, 0.13333333333333333)
(0.09019607843137255, 0.7450980392156863, 0.8117647058823529)
또는 unt8:
import matplotlib; print('\n'.join([str(tuple(int(round(v*255)) for v in matplotlib.colors.to_rgb(c))) for c in matplotlib.pyplot.rcParams['axes.prop_cycle'].by_key()['color']]))
(31, 119, 180)
(255, 127, 14)
(44, 160, 44)
(214, 39, 40)
(148, 103, 189)
(140, 86, 75)
(227, 119, 194)
(127, 127, 127)
(188, 189, 34)
(23, 190, 207)
언급URL : https://stackoverflow.com/questions/42086276/get-default-line-colour-cycle
'programing' 카테고리의 다른 글
C Int 및 Long 32 - 64비트 단위의 값 범위 (0) | 2023.06.16 |
---|---|
세션 상태 손실 (0) | 2023.06.11 |
새 줄 없이 C를 삽입합니다. (0) | 2023.06.11 |
Python Regex가 그룹을 즉시 대체 (0) | 2023.06.11 |
변수를 사용하여 data.table에 열 이름 전달 (0) | 2023.06.11 |