प्लॉट बैकग्राउंड का रंग कैसे बदलें?


226

मैं matplotlib में स्कैटर प्लॉट बना रहा हूं और वास्तविक प्लॉट की पृष्ठभूमि को काले रंग में बदलने की आवश्यकता है। मुझे पता है कि किस तरह से प्लॉट का चेहरा रंग बदलना है:

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

यहां छवि विवरण दर्ज करें

मेरा मुद्दा यह है कि इससे भूखंड के चारों ओर के स्थान का रंग बदल जाता है। मैं कथानक की वास्तविक पृष्ठभूमि का रंग कैसे बदल सकता हूँ?


9
सिर्फ FYI करें, इसके अलावा @Evert ने क्या कहा, आप बस ax.patch.set_facecolor('black')(जहां axअक्षों का उदाहरण है) का उपयोग कर सकते हैं । fig.patchआंकड़ा पृष्ठभूमि है और ax.patchकुल्हाड़ियों पृष्ठभूमि है।
जो किंग्सटन

जवाबों:


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
  • आपने स्टेटफुल एपीआई का उपयोग किया (यदि आप कुछ पंक्तियों से अधिक कुछ भी कर रहे हैं, और विशेष रूप से यदि आपके पास कई प्लॉट हैं, तो ऊपर दी गई ऑब्जेक्ट-ओरिएंटेड विधियाँ जीवन को आसान बनाती हैं क्योंकि आप विशिष्ट आंकड़ों का उल्लेख कर सकते हैं, कुछ अक्षों पर साजिश कर सकते हैं, और अनुकूलित कर सकते हैं। या तो)

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

तो आप का उपयोग कर सकते हैं set_facecolor:

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

कुल्हाड़ियों पर गुलाबी पृष्ठभूमि के साथ उदाहरण प्लॉट

क्या रंग हो सकता है के लिए एक पुनश्चर्या के रूप में:

matplotlib.colors

Matplotlib एक रंग निर्दिष्ट करने के लिए निम्नलिखित स्वरूपों को पहचानता है:

  • आरजीबी या आरजीबीए फ्लोट वैल्यू में [0, 1](जैसे, (0.1, 0.2, 0.5)या (0.1, 0.2, 0.5, 0.3));
  • एक हेक्स आरजीबी या आरजीबीए स्ट्रिंग (जैसे, '#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'}है जहाँ से झांकी रंग हैं 'टी 10' स्पष्ट पैलेट (जो डिफ़ॉल्ट रंग चक्र है);
  • एक "CN" रंग युक्ति, अर्थात 'C' जिसके बाद एक अंक है, जो कि डिफ़ॉल्ट गुण चक्र ( matplotlib.rcParams['axes.prop_cycle']) में एक सूचकांक है ; अनुक्रमणिका कलाकार के निर्माण के समय में होती है और यदि चक्र में रंग शामिल नहीं है, तो यह काला हो जाता है।

"CN" के अलावा रंग के सभी स्ट्रिंग विनिर्देश केस-असंवेदनशील हैं।


यदि कुल्हाड़ियों को उत्पन्न करने के कुछ अन्य सामान्य तरीके हैं, तो मुझे बताएं।
निक टी

ऐसा लगता है कि पिछले 3 वर्षों में कुछ बिंदु पर यह विधि गायब हो गई ... MethodNotFound
डेमिस

@ हाल ही के वर्षों में इस पद्धति को जोड़ा गया। पुराने संस्करणों में इसे कैसे किया जाए, इसके लिए ImportOOfBeingEarnest का उत्तर देखें ।
निक टी

47

एक विधि मैन्युअल रूप से आपकी स्क्रिप्ट के भीतर अक्ष पृष्ठभूमि रंग के लिए डिफ़ॉल्ट सेट करना है ( मैटलोट्लिब को अनुकूलित करना देखें ):

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

यह निक टी के तरीके के विपरीत है जो एक विशिष्ट axesवस्तु के लिए पृष्ठभूमि का रंग बदलता है । यदि आप समान शैलियों के साथ कई अलग-अलग प्लॉट बना रहे हैं, तो डिफॉल्ट्स को रीसेट करना उपयोगी नहीं है और विभिन्न axesऑब्जेक्ट्स को बदलते नहीं रखना चाहते हैं।

नोट: के लिए बराबर

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

आपके प्रश्न से है:

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


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')विंडोज़ का उपयोग करके, प्लॉटिंग कमांड से पहले सफलता मिली ।
हेल्टनबीकर

10
axis_bg axis_bgcolorMatplotlib 2.0.0 में पदावनत और matplotlib 2.2.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")


FYI करें, ax.set_axis_bgcolor("black")Python v2.7.14 / MPL v1.5.1 पर काम करता है, लेकिन ax.set_facecolor()नहीं करता है। कहीं MPL v1.5.1 और v2.2.0 के बीच उचित फ़ंक्शन स्विच हो गया।
डेमिस

1
@ डेमिस यदि आपको एक समाधान की आवश्यकता है जो सभी संस्करणों में काम करता है, तो उपयोग करें 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))

यह केवल विंडो बैकग्राउंड का रंग बदलता है, वास्तविक प्लॉट का रंग नहीं
टॉम कपिस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.