그림에서 표시된 각 선에 대해 새 색상을 선택하는 방법
표시된 각 선에 대해 색상을 지정하지 않고 각 선에 고유한 색상을 지정합니다.하지만 내가 뛰면,
from matplotlib import pyplot as plt
for i in range(20):
plt.plot([0, 1], [i, i])
plt.show()
그러면 다음과 같은 출력이 나옵니다.
위의 이미지를 보면 matplotlib이 각 라인에 대해 서로 다른 색상을 선택하려고 하지만 결국 색상을 재사용합니다. 상위 10개 라인은 하위 10개와 동일한 색상을 사용합니다.이미 사용한 색상이 반복되는 것을 막거나 사용할 색상 목록을 제공하고 싶습니다.
저는 보통 다음 중 두 번째를 사용합니다.
from matplotlib.pyplot import cm
import numpy as np
#variable n below should be number of curves to plot
#version 1:
color = cm.rainbow(np.linspace(0, 1, n))
for i, c in zip(range(n), color):
plt.plot(x, y, c=c)
#or version 2:
color = iter(cm.rainbow(np.linspace(0, 1, n)))
for i in range(n):
c = next(color)
plt.plot(x, y, c=c)
2: § 2:
매트 플롯립 1.5+
사용할 수 있습니다.axes.set_prop_cycle(계속).
매트플로트립 1.0-1.4
사용할 수 있습니다.axes.set_color_cycle(계속).
산점도 lib 0.x
사용할 수 있습니다.Axes.set_default_color_cycle.
다음과 같이 미리 정의된 "질적 컬러 맵"을 사용할 수 있습니다.
from matplotlib.cm import get_cmap
name = "Accent"
cmap = get_cmap(name) # type: matplotlib.colors.ListedColormap
colors = cmap.colors # type: list
axes.set_prop_cycle(color=colors)
matplotlib 3.0.3에서 테스트되었습니다.전화할 수 없는 이유에 대한 자세한 내용은 https://github.com/matplotlib/matplotlib/issues/10840 를 참조하십시오.axes.set_prop_cycle(color=cmap).
사전 정의된 정성적 색상표 목록은 https://matplotlib.org/gallery/color/colormap_reference.html 에서 확인할 수 있습니다.

prop_cycle
color_cycle이 일반화를 위해 1.5에서 더 이상 사용되지 않았습니다. http://matplotlib.org/users/whats_new.html#added-axes-prop-cycle-key-to-rcparams
# cycler is a separate package extracted from matplotlib.
from cycler import cycler
import matplotlib.pyplot as plt
plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b'])))
plt.plot([1, 2])
plt.plot([2, 3])
plt.plot([3, 4])
plt.plot([4, 5])
plt.plot([5, 6])
plt.show()

(현재는 이름이 잘못 붙여짐) 예에도 나와 있습니다. http://matplotlib.org/1.5.1/examples/color/color_cycle_demo.html 에서 언급된 https://stackoverflow.com/a/4971431/895245 .
matplotlib 1.5.1에서 테스트했습니다.
색을 자동으로 변경할 수 있을지는 모르겠지만 루프를 이용하여 다른 색을 생성할 수 있습니다.
for i in range(20):
ax1.plot(x, y, color = (0, i / 20.0, 0, 1)
이 경우 색상은 검은색에서 100% 녹색까지 다양하지만 원하는 경우 조정할 수 있습니다.
matplotlib plot() 문서를 참조하고 다음을 찾습니다.color키워드 인수.
색상 목록을 입력하려면 목록이 충분히 큰지 확인한 다음 루프의 인덱스를 사용하여 색상을 선택합니다.
colors = ['r', 'b', ...., 'w']
for i in range(20):
ax1.plot(x, y, color = colors[i])
Ciro의 답변 노트처럼, 당신은 다음을 사용할 수 있습니다.prop_cycle순환할 matplotlib의 색상 리스트를 설정합니다.하지만 몇 가지 색일까요?선의 수가 서로 다른 많은 그림에 동일한 색 주기를 사용하려면 어떻게 해야 합니까?
한 가지 전술은 https://gamedev.stackexchange.com/a/46469/22397, 의 공식과 같은 공식을 사용하여 각 색상이 이전의 모든 색상과 크게 다른 색상 시퀀스를 생성하는 것입니다.
불행하게도,prop_cycle무한 시퀀스를 허용하지 않습니다. 이 시퀀스를 통과하면 영원히 중단됩니다.하지만 우리는, 예를 들어, 그러한 순서에서 생성된 첫 1000가지 색을 가지고, 그것을 색 주기로 설정할 수 있습니다.이렇게 하면 선의 개수가 정상인 그림의 경우 구별할 수 있는 색상을 얻을 수 있습니다.
예:
from matplotlib import pyplot as plt
from matplotlib.colors import hsv_to_rgb
from cycler import cycler
# 1000 distinct colors:
colors = [hsv_to_rgb([(i * 0.618033988749895) % 1.0, 1, 1])
for i in range(1000)]
plt.rc('axes', prop_cycle=(cycler('color', colors)))
for i in range(20):
plt.plot([1, 0], [i, i])
plt.show()
출력:
이제, 모든 색깔들이 다릅니다 - 비록 제가 그것들 중 몇 가지를 구별하는 데 어려움을 겪고 있다는 것을 인정하지만요!
의 기본 색 주기를 변경할 수도 있습니다.matplotlibrc파일. 파일이 어디에 있는지 모르면 python에서 다음을 수행합니다.
import matplotlib
matplotlib.matplotlib_fname()
현재 사용 중인 matplot librc 파일의 경로가 표시됩니다.그 파일에서 당신은 다른 많은 설정들 중에서 찾을 수 있을 것이고 또한 그것에 대한 것입니다.axes.color.cycle원하는 색상 순서를 입력하기만 하면 모든 플롯에서 찾을 수 있습니다.matplotlib에서 모든 유효한 HTML 색상 이름을 사용할 수도 있습니다.
matplotlib.cm.get_cmap그리고.matplotlib.pyplot.cm.get_cmap에서 사용되지 않습니다.matplotlib 3.7.0- 사용하다
matplotlib.colormaps[name]또는matplotlib.colormaps.get_cmap(obj)대신. .get_cmap더 이상은 없습니다.lut매개 변수대신 사용.resampledcmap = mpl.colormaps.get_cmap('viridis').resampled(20)를 생성합니다.matplotlib.colors.ListedColormap물건.- 또한.
cmap = mpl.colormaps['viridis'].resampled(20)
- 또한.
colors = mpl.colormaps.get_cmap('viridis').resampled(20).colors색상 번호 배열을 만듭니다.
import matplotlib as mpl
import matplotlib.pyplot as mpl
import numpy as np
colors = mpl.colormaps.get_cmap('viridis').resampled(20).colors
for i, color in enumerate(colors):
plt.plot([0, 1], [i, i], color=color)
plt.show()
- Matplotlib의 색상 맵 구조가 다른 이유에서 설명한 것처럼,
.colors에서 색상 배열을 추출할 것입니다.ListedColormap그러나 사용할 수 없습니다.LinearSegmentedColormap기타 색상표에 표시된 것과 같은. - 해결 방법은 다음과 같습니다.
colors = cmap(np.arange(0, cmap.N))
cmap = mpl.colormaps.get_cmap('summer').resampled(20)
colors = cmap(np.arange(0, cmap.N))
for i, color in enumerate(colors):
plt.plot([0, 1], [i, i], color=color)
plt.show()
언급URL : https://stackoverflow.com/questions/4971269/how-to-pick-a-new-color-for-each-plotted-line-within-a-figure
'source' 카테고리의 다른 글
| 판다와 함께하는 파이썬 타입 힌트? (0) | 2023.07.19 |
|---|---|
| 열 값을 기준으로 한 테이블에서 다른 테이블로 데이터를 가져오는 방법 (0) | 2023.07.19 |
| 배열 길이별 Mongo 순서 (0) | 2023.05.20 |
| SQL에서 단일 따옴표와 이중 따옴표의 차이점은 무엇입니까? (0) | 2023.05.20 |
| Mac에서 Python 업데이트 중 (0) | 2023.05.20 |



