本文整理汇总了Python中matplotlib.backends.backend_gtk3cairo.FigureCanvasGTK3Cairo.mpl_connect方法的典型用法代码示例。如果您正苦于以下问题:Python FigureCanvasGTK3Cairo.mpl_connect方法的具体用法?Python FigureCanvasGTK3Cairo.mpl_connect怎么用?Python FigureCanvasGTK3Cairo.mpl_connect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类matplotlib.backends.backend_gtk3cairo.FigureCanvasGTK3Cairo
的用法示例。
在下文中一共展示了FigureCanvasGTK3Cairo.mpl_connect方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Profile
# 需要导入模块: from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo [as 别名]
# 或者: from matplotlib.backends.backend_gtk3cairo.FigureCanvasGTK3Cairo import mpl_connect [as 别名]
class Profile(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Profile")
#f = Figure(figsize=(5,4), dpi=100)
f = Figure()
self.axes = f.add_subplot(111)
self.axes.set_xlabel('Time (sec.)')
self.axes.set_ylabel('Temperature (C)')
self.axes.set_xlim(0, 5*60)
self.axes.set_ylim(20, 300)
self.axes.grid()
self.axes.xaxis.set_major_formatter(FuncFormatter(self.format_xaxis))
self.x = []
self.y = []
self.plot, = self.axes.plot(self.x, self.y, 'o-', picker=5)
self.minutes = False
self.file_name = None
self.canvas = FigureCanvas(f)
self.canvas.set_size_request(800,600)
self.canvas.mpl_connect('button_press_event', self.onclick)
self.canvas.mpl_connect('button_release_event', self.onrelease)
self.canvas.mpl_connect('pick_event', self.onpick)
self.canvas.mpl_connect('motion_notify_event', self.onmotion)
self.picking = None
self.store = Gtk.ListStore(str, str)
self.tree = Gtk.TreeView(self.store)
renderer = Gtk.CellRendererText()
renderer.set_property("editable", True)
renderer.connect('edited', self.on_time_edited)
column = Gtk.TreeViewColumn("Time", renderer, text=0)
self.tree.append_column(column)
renderer = Gtk.CellRendererText()
renderer.set_property("editable", True)
renderer.connect('edited', self.on_temp_edited)
column = Gtk.TreeViewColumn("Temperature", renderer, text=1)
self.tree.append_column(column)
self.box = Gtk.Box()
self.box.pack_start(self.canvas, False, False, 0)
self.box.pack_start(self.tree, True, True, 0)
action_group = Gtk.ActionGroup("profile_actions")
action_group.add_actions([
("FileMenu", None, "File", None, None, None),
("FileNew", Gtk.STOCK_NEW, "_New", "<control>N", None, self.on_file_new),
("FileOpen", Gtk.STOCK_OPEN, "_Open", "<control>O", None, self.on_file_open),
("FileSave", Gtk.STOCK_SAVE, "_Save", "<control>S", None, self.on_file_save),
("FileSaveAs", Gtk.STOCK_SAVE_AS, "Save _As…", "<shift><control>S", None, self.on_file_save_as),
("FileQuit", Gtk.STOCK_QUIT, "_Quit", "<control>Q", None, Gtk.main_quit)
])
uimanager = Gtk.UIManager()
uimanager.add_ui_from_string(UI_INFO)
accelgroup = uimanager.get_accel_group()
self.add_accel_group(accelgroup)
uimanager.insert_action_group(action_group)
menubar = uimanager.get_widget("/MenuBar")
self.vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.vbox.pack_start(menubar, False, False, 0)
self.vbox.pack_start(self.box, True, True, 0)
self.statusbar = Gtk.Statusbar()
self.status_pos = self.statusbar.get_context_id("position")
self.vbox.pack_start(self.statusbar, False, False, 0)
self.add(self.vbox)
def open_file(self, name):
reader = csv.reader(open(name, 'rb'))
x, y = zip(*reader)
x = [ float(i) for i in x]
y = [ float(i) for i in y]
self.x, self.y = x, y
self.file_name = name
self.set_title('Profile - ' + name)
self.update_data()
self.update_scale()
self.canvas.draw()
def save_file(self, name):
writer = csv.writer(open(name, 'wd'))
writer.writerows(zip(self.x, self.y))
self.file_name = name
self.set_title('Profile - ' + name)
def on_file_new(self, widget):
self.file_name = None
self.set_title('Profile')
self.x = []
self.y = []
self.store.clear()
self.update_data()
self.update_scale()
self.canvas.draw()
def on_file_open(self, widget):
#.........这里部分代码省略.........
示例2: GraphBase
# 需要导入模块: from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo [as 别名]
# 或者: from matplotlib.backends.backend_gtk3cairo.FigureCanvasGTK3Cairo import mpl_connect [as 别名]
class GraphBase(object):
"""
A basic graph provider for using :py:mod:`matplotlib` to create graph
representations of campaign data. This class is meant to be subclassed
by real providers.
"""
name = 'Unknown'
"""The name of the graph provider."""
name_human = 'Unknown'
"""The human readable name of the graph provider used for UI identification."""
graph_title = 'Unknown'
"""The title that will be given to the graph."""
is_available = True
def __init__(self, application, size_request=None, style_context=None):
"""
:param tuple size_request: The size to set for the canvas.
"""
self.application = application
self.style_context = style_context
self.config = application.config
"""A reference to the King Phisher client configuration."""
self.figure, _ = pyplot.subplots()
self.figure.set_facecolor(self.get_color('bg', ColorHexCode.WHITE))
self.axes = self.figure.get_axes()
self.canvas = FigureCanvas(self.figure)
self.manager = None
self.minimum_size = (380, 200)
"""An absolute minimum size for the canvas."""
if size_request is not None:
self.resize(*size_request)
self.canvas.mpl_connect('button_press_event', self.mpl_signal_canvas_button_pressed)
self.canvas.show()
self.navigation_toolbar = NavigationToolbar(self.canvas, self.application.get_active_window())
self.popup_menu = managers.MenuManager()
self.popup_menu.append('Export', self.signal_activate_popup_menu_export)
self.popup_menu.append('Refresh', self.signal_activate_popup_refresh)
menu_item = Gtk.CheckMenuItem.new_with_label('Show Toolbar')
menu_item.connect('toggled', self.signal_toggled_popup_menu_show_toolbar)
self._menu_item_show_toolbar = menu_item
self.popup_menu.append_item(menu_item)
self.navigation_toolbar.hide()
self._legend = None
@property
def rpc(self):
return self.application.rpc
@staticmethod
def _ax_hide_ticks(ax):
for tick in ax.yaxis.get_major_ticks():
tick.tick1On = False
tick.tick2On = False
@staticmethod
def _ax_set_spine_color(ax, spine_color):
for pos in ('top', 'right', 'bottom', 'left'):
ax.spines[pos].set_color(spine_color)
def add_legend_patch(self, legend_rows, fontsize=None):
if self._legend is not None:
self._legend.remove()
self._legend = None
fontsize = fontsize or self.fontsize_scale
legend_bbox = self.figure.legend(
tuple(patches.Patch(color=patch_color) for patch_color, _ in legend_rows),
tuple(label for _, label in legend_rows),
borderaxespad=1.25,
fontsize=fontsize,
frameon=True,
handlelength=1.5,
handletextpad=0.75,
labelspacing=0.3,
loc='lower right'
)
legend_bbox.legendPatch.set_linewidth(0)
self._legend = legend_bbox
def get_color(self, color_name, default):
"""
Get a color by its style name such as 'fg' for foreground. If the
specified color does not exist, default will be returned. The underlying
logic for this function is provided by
:py:func:`~.gui_utilities.gtk_style_context_get_color`.
:param str color_name: The style name of the color.
:param default: The default color to return if the specified one was not found.
:return: The desired color if it was found.
:rtype: tuple
"""
color_name = 'theme_color_graph_' + color_name
sc_color = gui_utilities.gtk_style_context_get_color(self.style_context, color_name, default)
return (sc_color.red, sc_color.green, sc_color.blue)
def make_window(self):
"""
Create a window from the figure manager.
#.........这里部分代码省略.........
示例3: CampaignGraph
# 需要导入模块: from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo [as 别名]
# 或者: from matplotlib.backends.backend_gtk3cairo.FigureCanvasGTK3Cairo import mpl_connect [as 别名]
class CampaignGraph(object):
"""
A basic graph provider for using :py:mod:`matplotlib` to create graph
representations of campaign data. This class is meant to be subclassed
by real providers.
"""
name = 'Unknown'
"""The name of the graph provider."""
name_human = 'Unknown'
"""The human readable name of the graph provider used for UI identification."""
graph_title = 'Unknown'
"""The title that will be given to the graph."""
table_subscriptions = []
"""A list of tables from which information is needed to produce the graph."""
is_available = True
def __init__(self, config, parent, size_request=None):
"""
:param dict config: The King Phisher client configuration.
:param parent: The parent window for this object.
:type parent: :py:class:`Gtk.Window`
:param tuple size_request: The size to set for the canvas.
"""
self.config = config
"""A reference to the King Phisher client configuration."""
self.parent = parent
"""The parent :py:class:`Gtk.Window` instance."""
self.figure, _ = pyplot.subplots()
self.axes = self.figure.get_axes()
self.canvas = FigureCanvas(self.figure)
self.manager = None
if size_request:
self.canvas.set_size_request(*size_request)
self.canvas.mpl_connect('button_press_event', self.mpl_signal_canvas_button_pressed)
self.canvas.show()
self.navigation_toolbar = NavigationToolbar(self.canvas, self.parent)
self.popup_menu = Gtk.Menu.new()
menu_item = Gtk.MenuItem.new_with_label('Export')
menu_item.connect('activate', self.signal_activate_popup_menu_export)
self.popup_menu.append(menu_item)
menu_item = Gtk.MenuItem.new_with_label('Refresh')
menu_item.connect('activate', lambda action: self.refresh())
self.popup_menu.append(menu_item)
menu_item = Gtk.CheckMenuItem.new_with_label('Show Toolbar')
menu_item.connect('toggled', self.signal_toggled_popup_menu_show_toolbar)
self._menu_item_show_toolbar = menu_item
self.popup_menu.append(menu_item)
self.popup_menu.show_all()
self.navigation_toolbar.hide()
def _load_graph(self, info_cache):
raise NotImplementedError()
def _graph_bar_set_yparams(self, top_lim):
min_value = top_lim + (top_lim * 0.075)
if min_value <= 25:
scale = 5
else:
scale = scale = 10 ** (len(str(int(min_value))) - 1)
inc_scale = scale
while scale <= min_value:
scale += inc_scale
top_lim = scale
ax = self.axes[0]
yticks = set((round(top_lim * 0.5), top_lim))
ax.set_yticks(tuple(yticks))
ax.set_ylim(top=top_lim)
return
def _graph_null_pie(self, title):
ax = self.axes[0]
ax.pie((100,), labels=(title,), colors=(MPL_COLOR_NULL,), autopct='%1.0f%%', shadow=True, startangle=90)
ax.axis('equal')
return
def add_legend_patch(self, legend_rows, fontsize=None):
handles = []
if not fontsize:
scale = self.markersize_scale
if scale < 5:
fontsize = 'xx-small'
elif scale < 7:
fontsize = 'x-small'
elif scale < 9:
fontsize = 'small'
else:
fontsize = 'medium'
for row in legend_rows:
handles.append(patches.Patch(color=row[0], label=row[1]))
self.axes[0].legend(handles=handles, fontsize=fontsize, loc='lower right')
def graph_bar(self, bars, color=None, xticklabels=None, ylabel=None):
"""
Create a standard bar graph with better defaults for the standard use
cases.
:param list bars: The values of the bars to graph.
#.........这里部分代码省略.........
示例4: CampaignGraph
# 需要导入模块: from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo [as 别名]
# 或者: from matplotlib.backends.backend_gtk3cairo.FigureCanvasGTK3Cairo import mpl_connect [as 别名]
class CampaignGraph(object):
"""
A basic graph provider for using :py:mod:`matplotlib` to create graph
representations of campaign data. This class is meant to be subclassed
by real providers.
"""
name = 'Unknown'
"""The name of the graph provider."""
name_human = 'Unknown'
"""The human readable name of the graph provider used for UI identification."""
graph_title = 'Unknown'
"""The title that will be given to the graph."""
table_subscriptions = []
"""A list of tables from which information is needed to produce the graph."""
is_available = True
def __init__(self, application, size_request=None, style_context=None):
"""
:param tuple size_request: The size to set for the canvas.
"""
self.application = application
self.style_context = style_context
self.config = application.config
"""A reference to the King Phisher client configuration."""
self.figure, _ = pyplot.subplots()
self.figure.set_facecolor(self.get_color('bg', ColorHexCode.WHITE))
self.axes = self.figure.get_axes()
self.canvas = FigureCanvas(self.figure)
self.manager = None
if size_request:
self.canvas.set_size_request(*size_request)
self.canvas.mpl_connect('button_press_event', self.mpl_signal_canvas_button_pressed)
self.canvas.show()
self.navigation_toolbar = NavigationToolbar(self.canvas, self.application.get_active_window())
self.popup_menu = Gtk.Menu.new()
menu_item = Gtk.MenuItem.new_with_label('Export')
menu_item.connect('activate', self.signal_activate_popup_menu_export)
self.popup_menu.append(menu_item)
menu_item = Gtk.MenuItem.new_with_label('Refresh')
menu_item.connect('activate', lambda action: self.refresh())
self.popup_menu.append(menu_item)
menu_item = Gtk.CheckMenuItem.new_with_label('Show Toolbar')
menu_item.connect('toggled', self.signal_toggled_popup_menu_show_toolbar)
self._menu_item_show_toolbar = menu_item
self.popup_menu.append(menu_item)
self.popup_menu.show_all()
self.navigation_toolbar.hide()
self._legend = None
@property
def rpc(self):
return self.application.rpc
@staticmethod
def _ax_hide_ticks(ax):
for tick in ax.yaxis.get_major_ticks():
tick.tick1On = False
tick.tick2On = False
@staticmethod
def _ax_set_spine_color(ax, spine_color):
for pos in ('top', 'right', 'bottom', 'left'):
ax.spines[pos].set_color(spine_color)
def _load_graph(self, info_cache):
raise NotImplementedError()
def add_legend_patch(self, legend_rows, fontsize=None):
if self._legend is not None:
self._legend.remove()
self._legend = None
if fontsize is None:
scale = self.markersize_scale
if scale < 5:
fontsize = 'xx-small'
elif scale < 7:
fontsize = 'x-small'
elif scale < 9:
fontsize = 'small'
else:
fontsize = 'medium'
legend_bbox = self.figure.legend(
tuple(patches.Patch(color=patch_color) for patch_color, _ in legend_rows),
tuple(label for _, label in legend_rows),
borderaxespad=1.25,
fontsize=fontsize,
frameon=True,
handlelength=1.5,
handletextpad=0.75,
labelspacing=0.3,
loc='lower right'
)
legend_bbox.legendPatch.set_linewidth(0)
self._legend = legend_bbox
def get_color(self, color_name, default):
"""
Get a color by its style name such as 'fg' for foreground. If the
#.........这里部分代码省略.........
示例5: MyWindow
# 需要导入模块: from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo [as 别名]
# 或者: from matplotlib.backends.backend_gtk3cairo.FigureCanvasGTK3Cairo import mpl_connect [as 别名]
#.........这里部分代码省略.........
def open_airglow_file(self, airglow_filename):
#this opens up the fits file
hdulist = fits.open(airglow_filename)
## this line will need to be used for real data
targname = hdulist[0].header['targname']
#targname = self.targname
## but for now
#~ targname = 'HD128627J'
# this picks out the actual data from fits file, and turns it into numpy array
self.glowdata = hdulist[0].data
hdulist.close()
# simple subtraction of aurglow image from science image
scidata = self.scidata - self.glowdata
self.science(scidata, targname)
## gauss fitting button
def on_gauss_fit_button_clicked(self, widget, data):
self.statusbar.push(data,'Ready to fit. Click on both sides of the emission feature you wish to fit')
self.xdata = []
def onclick(event):
if self.gauss_fit_button.get_active():
self.xdata.append(event.xdata)
self.statusbar.push(data, 'one more click...')
if len(self.xdata) == 2:
self.statusbar.push(data, 'Ready to fit. Click on both sides of the emission feature you wish to fit')
xdata = self.xdata
self.gauss_fit(xdata)
# mouse click event on 1d
cid = self.canvas.mpl_connect('button_press_event', onclick)
if [self.gauss_fit_button.get_active()] == [False]:
self.statusbar.push(0, 'Opened File:' + File)
### gauss fitting ###
def gauss_fit(self, xdata):
x = list(self.x)
xg = []
xg.append(int(xdata[0]))
xg.append(int(xdata[1]))
xg1 = min(xg)
xg2 = max(xg)
xgauss = x[xg1:xg2]
ygauss = self.odo[xg1:xg2]
right = ygauss[len(xgauss)-4:len(xgauss)]
left = ygauss[0:4]
# background subtraction
averight = sum(right) / len(right)
aveleft = sum(left) / len(left)
bg_y = [averight, aveleft]
rightx = xgauss[len(xgauss)-4:len(xgauss)]
leftx = xgauss[0:4]
averightx = sum(rightx) / len(rightx)
aveleftx = sum(leftx) / len(leftx)
bg_x = [averightx, aveleftx]
m,b = np.polyfit(bg_x, bg_y, 1)
slopex = [i * m for i in xgauss]
bg_fit = slopex + b
示例6: __init__
# 需要导入模块: from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo [as 别名]
# 或者: from matplotlib.backends.backend_gtk3cairo.FigureCanvasGTK3Cairo import mpl_connect [as 别名]
def __init__(self, sigs={}, fig=None, title='', uidir=''):
oscopy.Figure.__init__(self, None, fig)
self.to_figure = [Gtk.TargetEntry.new("text/plain",
Gtk.TargetFlags.SAME_APP,
self.TARGET_TYPE_SIGNAL)]
self.hadjpreval = None
self.vadjpreval = None
self.current_axes = None
# The canvas for the Figure
canvas = FigureCanvas(self)
canvas.supports_blit = False
canvas.mpl_connect('button_press_event', self.button_press)
canvas.mpl_connect('scroll_event', self.mouse_scroll)
canvas.mpl_connect('axes_enter_event', self.axes_enter)
canvas.mpl_connect('axes_leave_event', self.axes_leave)
canvas.mpl_connect('figure_enter_event', self.figure_enter)
canvas.mpl_connect('figure_leave_event', self.figure_leave)
canvas.mpl_connect('key_press_event', self.key_press)
canvas.mpl_connect('motion_notify_event', self.show_coords)
self.canvas = canvas
self.draw_hid = canvas.mpl_connect('draw_event', self.update_scrollbars)
# The GtkBuilder
builder = Gtk.Builder()
builder.add_from_file('/'.join((uidir, IOSCOPY_GTK_FIGURE_UI)))
self.builder = builder
self.uidir = uidir
# The window
w = builder.get_object('w')
w.set_title(title)
w.drag_dest_set(Gtk.DestDefaults.ALL, self.to_figure, Gdk.DragAction.COPY)
# Init the store for the combo box
store = builder.get_object('store')
iter = store.append([_('All Graphs'), False, True, False, Gtk.Adjustment(), Gtk.Adjustment()])
for i in range(4):
iter = store.append([_('Graph %d') % (i + 1), False, True if i < len(self.graphs) else False, False, Gtk.Adjustment(), Gtk.Adjustment()])
self.cbx_store = store
# The Graph Combobox
graphs_cbx = builder.get_object('graphs_cbx')
graphs_cbx.set_active(0)
# Add remaining widgets
builder.get_object('box').pack_start(canvas, True, True, 0)
# Expose widgets needed elsewhere
self.window = w
self.hbar = builder.get_object('hbar')
self.vbar = builder.get_object('vbar')
self.coords_lbl1 = builder.get_object('coord_lbl1')
self.coords_lbl2 = builder.get_object('coord_lbl2')
self.graphs_cbx = graphs_cbx
self.store = store
self.mpsel_get_act = [builder.get_object('rb%d' % (b + 1)).get_active for b in range(4)]
self.mpsel_set_act = [builder.get_object('rb%d' % (b + 1)).set_active for b in range(4)]
self.mpsel_set_sens = [builder.get_object('rb%d' % (b + 1)).set_sensitive for b in range(4)]
self.window.show_all()
# Actions
a = Gio.SimpleAction.new('set_range', GLib.VariantType.new('t'))
a.connect('activate', self.set_range_activated)
self.window.add_action(a)
a = Gio.SimpleAction.new('set_units', GLib.VariantType.new('t'))
a.connect('activate', self.set_units_activated)
self.window.add_action(a)
a = Gio.SimpleAction.new_stateful('set_scale', GLib.VariantType.new('(ts)'), GLib.Variant.new_string('lin'))
a.connect('activate', self.set_scale_activated)
self.window.add_action(a)
a = Gio.SimpleAction.new('remove_signal', GLib.VariantType.new('(ts)'))
a.connect('activate', self.remove_signal_activated)
self.window.add_action(a)
# Connect additional GTK signals
cbmap = {'span_toggle_btn_toggled': self.span_toggle_btn_toggled,
'x10_toggle_btn_toggled': self.x10_toggle_btn_toggled,
'hadj_pressed': self.hadj_pressed,
'hadj_released': self.hadj_released,
'hscroll_change_value': self.hscroll_change_value,
'vadj_pressed': self.vadj_pressed,
'vadj_released': self.vadj_released,
'vscroll_change_value': self.vscroll_change_value,
'disable_adj_update_on_draw': self.disable_adj_update_on_draw,
'enable_adj_update_on_draw': self.enable_adj_update_on_draw,
'update_scrollbars': self.update_scrollbars,
'save_fig_btn_clicked': self.save_fig_btn_clicked,
'delete_event_cb': lambda w, e: w.hide() or True,
}
builder.connect_signals(cbmap)
graphs_cbx.connect('changed', self.graphs_cbx_changed,
(builder.get_object('x10_toggle_btn'),
builder.get_object('span_toggle_btn'),
store))
# Add signals
#.........这里部分代码省略.........
示例7: MyWindow
# 需要导入模块: from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo [as 别名]
# 或者: from matplotlib.backends.backend_gtk3cairo.FigureCanvasGTK3Cairo import mpl_connect [as 别名]
#.........这里部分代码省略.........
hdulist = fits.open(_AirglowFile)
## this line will need to be used for real data
#self.targname = hdulist[0].header['targname']
#targname = self.targname
## but for now
targname = 'HD128627J'
# this picks out the actual data from fits file, and turns it into numpy array
self.glowdata = hdulist[0].data
hdulist.close()
# simple subtraction of aurglow image from science image
scidata = self.scidata - self.glowdata
self.science(scidata,targname)
## gauss fitting button
def on_button3_clicked(self, widget, data):
self.statusbar.push(data,'Ready to fit. Click on both sides of the emission feature you wish to fit')
self.xdata = []
def onclick(event):
if self.button3.get_active():
self.xdata.append(event.xdata)
self.statusbar.push(data,'one more click...')
if len(self.xdata) == 2:
self.statusbar.push(data,'Ready to fit. Click on both sides of the emission feature you wish to fit')
xdata=self.xdata
self.gauss_fit(xdata)
# mouse click event on 1d
cid = self.canvas.mpl_connect('button_press_event', onclick)
if [self.button3.get_active()] == [False]:
self.statusbar.push(0,'Opened File:' + _File)
### guass fitting ###
def gauss_fit(self,xdata):
x = list(self.x)
xg=[]
xg.append(int(xdata[0]))
xg.append(int(xdata[1]))
xg1 = min(xg)
xg2 = max(xg)
xgauss = x[xg1:xg2]
ygauss = self.odo[xg1:xg2]
right = ygauss[len(xgauss)-4:len(xgauss)]
left = ygauss[0:4]
# background subtraction
averight = sum(right)/len(right)
aveleft = sum(left)/len(left)
bg_y = [averight,aveleft]
rightx = xgauss[len(xgauss)-4:len(xgauss)]
leftx = xgauss[0:4]
averightx = sum(rightx)/len(rightx)
aveleftx = sum(leftx)/len(leftx)
bg_x = [averightx,aveleftx]
m,b = np.polyfit(bg_x,bg_y,1)
slopex = [i * m for i in xgauss]
bg_fit = slopex+b