플롯 배경색을 변경하는 방법은 무엇입니까?


226

matplotlib에서 산점도를 만들고 실제 그림의 배경을 검은 색으로 변경해야합니다. 다음을 사용하여 플롯의 얼굴 색상을 변경하는 방법을 알고 있습니다.

fig = plt.figure()
fig.patch.set_facecolor('xkcd:mint green')

여기에 이미지 설명을 입력하십시오

내 문제는 이것이 플롯 주위의 공간 색상을 변경한다는 것입니다. 플롯의 실제 배경색을 어떻게 변경합니까?


9
참고로 @Evert가 말한 것 외에도 축 인스턴스는 ax.patch.set_facecolor('black')어디에 있습니까 ax? fig.patch그림 배경이고 ax.patch축 배경입니다.
Joe Kington

답변:


230

다음 방법 중 하나를 만든 객체set_facecolor(color)메소드를axes 사용하십시오 .

  • 도형과 축을 함께 만들었습니다

    fig, ax = plt.subplots(nrows=1, ncols=1)
  • 그림을 만든 다음 나중에 축을

    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1) # nrows, ncols, index
  • 상태 저장 API를 사용했습니다 (몇 줄 이상을 수행하는 경우 , 특히 여러 플롯이있는 경우 위의 객체 지향 방법을 사용하면 특정 그림을 참조하고 특정 축에 플롯하고 사용자 정의 할 수 있기 때문에보다 편리합니다. 어느 한 쪽)

    plt.plot(...)
    ax = plt.gca()

그런 다음 사용할 수 있습니다 set_facecolor:

ax.set_facecolor('xkcd:salmon')
ax.set_facecolor((1.0, 0.47, 0.42))

축에 분홍색 배경이있는 플롯 예

어떤 색상을 사용할 수 있는지에 대한 정보 :

matplotlib.colors

Matplotlib은 다음 형식을 인식하여 색상을 지정합니다.

  • 플로트 값의 RGB 또는 RGBA 튜플 [0, 1](예 : (0.1, 0.2, 0.5)또는 (0.1, 0.2, 0.5, 0.3));
  • 16 진 RGB 또는 RGBA 문자열 (예 : '#0F0F0F'또는 '#0F0F0F0F');
  • [0, 1]그레이 레벨 (예를 들어, '0.5') 을 포함 하는 부동 소수점 값의 문자열 표현 ;
  • 중 하나 {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'};
  • X11 / CSS4 색 이름;
  • xkcd 컬러 측량 의 이름 ; 접두사 'xkcd:'(예를 들어, 'xkcd:sky blue');
  • 그 중 하나는 {'tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'}'T10'범주 팔레트 (기본 색상주기)의 Tableau 색상입니다.
  • "CN"컬러 사양, 즉 'C'다음에 한 자리 숫자가 오며, 이는 기본 속성주기 ( matplotlib.rcParams['axes.prop_cycle'])에 대한 인덱스입니다 . 인덱싱은 아티스트 생성시 발생하며 사이클에 색상이 포함되지 않은 경우 기본값은 검은 색입니다.

"CN"이외의 모든 색상 문자열은 대소 문자를 구분하지 않습니다.


축을 생성하는 다른 일반적인 방법이 있으면 알려주십시오.
Nick T

지난 3 년 동안이 방법이 어느 시점에서 사라진 것 같습니다 ... MethodNotFound
Demis

@Demis이 방법은 최근 몇 년 동안 추가되었습니다. 이전 버전에서 수행하는 방법에 대해서는 ImportanceOfBeingEarnest의 답변 을 참조하십시오 .
Nick T

47

한 가지 방법은 스크립트 내에서 축 배경색의 기본값을 수동으로 설정하는 것입니다 ( matplotlib 사용자 정의 참조 ).

import matplotlib.pyplot as plt
plt.rcParams['axes.facecolor'] = 'black'

이는 특정 axes객체의 배경색을 변경하는 Nick T의 방법과 대조적 입니다. 비슷한 스타일로 여러 개의 다른 플롯을 만들고 다른 axes객체 를 계속 변경하지 않으려는 경우 기본값을 재설정하면 유용 합니다.

참고 :

fig = plt.figure()
fig.patch.set_facecolor('black')

귀하의 질문에서 :

plt.rcParams['figure.facecolor'] = 'black'

도움이됩니다! 참고로 난 그냥 요청했습니다 제대로 리셋 matplotlib.rcParams 원래 기본값으로 사전을
uhoh

41

이 같은? axisbg키워드를 사용하여 subplot:

>>> from matplotlib.figure import Figure
>>> from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
>>> figure = Figure()
>>> canvas = FigureCanvas(figure)
>>> axes = figure.add_subplot(1, 1, 1, axisbg='red')
>>> axes.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x2827e50>]
>>> canvas.print_figure('red-bg.png')

(검은 색 배경이 아닌 산점도가 아닙니다.)

여기에 이미지 설명을 입력하십시오


3
plt.subplot('111', axisbg='black')Windows를 사용하여 플로팅 명령 이전에 성공했습니다 .
heltonbiker

10
axis_bg axis_bgcolor하기 matplotlib 2.2.0에서하기 matplotlib 2.0.0에서 사용되지 및 제거
RubenLaguna


12

다른 답변의 한 가지 제안은을 사용하는 것 ax.set_axis_bgcolor("red")입니다. 그러나 이것은 더 이상 사용되지 않으며 MatPlotLib> = v2.0에서는 작동하지 않습니다.

사용할 제안도 있습니다 ax.patch.set_facecolor("red")(MatPlotLib v1.5 및 v2.2 모두에서 작동). 이것이 잘 작동하지만 v2.0 +를위한 훨씬 쉬운 솔루션을 사용하는 것입니다

ax.set_facecolor("red")


참고 ax.set_axis_bgcolor("black")로 Python v2.7.14 / MPL v1.5.1에서는 작동하지만 ax.set_facecolor()작동하지 않습니다. MPL v1.5.1과 v2.2.0 사이에서 적절한 기능이 전환되었습니다.
Demis

1
@Demis 모든 버전에서 작동하는 솔루션이 필요한 경우을 사용하십시오 ax.patch.set_facecolor("red"). 권장되는 방법으로 matplotlib 2.0의 너트는 ax.set_facecolor입니다.
ImportanceOfBeingErnest

4

가장 쉬운 것은 플롯을 만들 때 색상을 제공하는 것입니다.

fig1 = plt.figure(facecolor=(1, 1, 1))

또는

fig1, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, facecolor=(1, 1, 1))

이것은 단지 윈도우 배경색이 아닌 실제 플롯 색상 변경
톰 Cupis

1

더 간단한 답변 :

ax = plt.axes()
ax.set_facecolor('silver')
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.