الثعبان مع matplotlib - إعادة استخدام وظائف الرسم

StackOverflow https://stackoverflow.com/questions/1413681

  •  06-07-2019
  •  | 
  •  

سؤال

ولدي متابعة المسألة على هذا السؤال href="https://stackoverflow.com/questions/1401102/python-with-matplotlib-drawing-multiple-figures-in-parallel/1401686#1401686"> .

هل من الممكن تبسيط الجيل الرقم من خلال وجود عدة مخطوطات الثعبان التي تعمل على أجزاء مختلفة من هذا الرقم؟

وعلى سبيل المثال، إذا كان لدي الوظائف التالية:

<اقتباس فقرة>   

وFunctionA: رسم بياني لشيء
  FunctionB: رسم مربع مع نص فيه
  FunctionC: رسم قطعة من شيء C
  FunctionD: رسم قطعة من شيء D

وكيف أذهب حول إعادة استخدام المهام المذكورة أعلاه في نصوص مختلفة؟ إذا أردت، على سبيل المثال، لإنشاء شخصية مع الرسم البياني مع قطعة من شيء C، يمكن أن أسميه نوعا ما FunctionA وFunctionC من مخطوطتي. أو، إذا أردت شخصية مع اثنين من المؤامرات، وكنت أدعو FunctionC وFunctionD.

ولست متأكدا إذا أنا موضحا نفسي واضح، ولكن طريقة أخرى لطرح هذا السؤال هو: كيف يمكنني تمرير كائن الرقم إلى وظيفة ومن ثم يكون وظيفة رسم شيء إلى كائن شخصية مرت ثم العودة مرة أخرى إلى البرنامج النصي الرئيسي لإضافة أشياء أخرى مثل العنوان أو شيء من هذا؟

هل كانت مفيدة؟

المحلول

وهنا كنت تريد استخدام الفنان كائنات ، وتمريرها حسب الحاجة ل وظائف هي:

import numpy as np
import matplotlib.pyplot as plt

def myhist(ax, color):
    ax.hist(np.log(np.arange(1, 10, .1)), facecolor=color)

def say_something(ax, words):
    t = ax.text(.2, 20., words)
    make_a_dim_yellow_bbox(t)

def make_a_dim_yellow_bbox(txt):
    txt.set_bbox(dict(facecolor='yellow', alpha=.2))

fig = plt.figure()
ax0 = fig.add_subplot(1,2,1)
ax1 = fig.add_subplot(1,2,2)

myhist(ax0, 'blue')
myhist(ax1, 'green')

say_something(ax0, 'this is the blue plot')
say_something(ax1, 'this is the green plot')

plt.show()

نصائح أخرى

وأوكي، لقد برزت كيفية القيام بذلك. وكان أبسط كثيرا مما كان يتصور. أنه يحتاج فقط قليلا من القراءة هنا مع في الرقم و <لأ href =" http://matplotlib.sourceforge.net/api/axes_api هتمل # matplotlib.axes.Axes "يختلط =" نوفولو noreferrer "> محاور الطبقات .

في السيناريو الرئيسي الخاص بك:

import pylab as plt  
import DrawFns  
fig = plt.figure()  
(do something with fig)  
DrawFns.WriteText(fig, 'Testing')  
plt.show()

في DrawFns.py الخاص بك:

def WriteText(_fig, _text):  
[indent]_fig.text(0, 0, _text)

وهذا كل شيء! ويمكنني أن أضيف المزيد من الوظائف في DrawFns.py، وندعو لهم من أي برنامج نصي طالما أنها مدرجة مع دعوة import. : D

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top