Rework legend to show lines rather than patches

This commit is contained in:
DarkPhoenix
2019-08-07 08:46:55 +03:00
parent 5102cb35c8
commit 72e56246f4

View File

@@ -50,7 +50,7 @@ try:
else:
graphFrame_enabled = False
from matplotlib.patches import Patch
from matplotlib.lines import Line2D
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as Canvas
from matplotlib.figure import Figure
from matplotlib.colors import hsv_to_rgb
@@ -252,7 +252,7 @@ class GraphFrame(wx.Frame):
self.subplot.clear()
self.subplot.grid(True)
legend = []
lineData = []
min_y = 0 if self.ctrlPanel.showY0 else None
max_y = 0 if self.ctrlPanel.showY0 else None
@@ -320,9 +320,9 @@ class GraphFrame(wx.Frame):
self.subplot.plot(xs, ys, color=color, linestyle=lineStyle)
if target is None:
legend.append((color, lineStyle, source.shortName))
lineData.append((color, lineStyle, source.shortName))
else:
legend.append((color, lineStyle, '{} vs {}'.format(source.shortName, target.shortName)))
lineData.append((color, lineStyle, '{} vs {}'.format(source.shortName, target.shortName)))
except Exception as ex:
pyfalog.warning('Invalid values in "{0}"', source.name)
self.canvas.draw()
@@ -346,17 +346,16 @@ class GraphFrame(wx.Frame):
max_y += 5
self.subplot.set_ylim(bottom=min_y, top=max_y)
legend2 = []
for i, iData in enumerate(legend):
legendLines = []
for i, iData in enumerate(lineData):
color, lineStyle, label = iData
legend2.append(Patch(color=color, linestyle=lineStyle, label=label), )
legendLines.append(Line2D([0], [0], color=color, linestyle=lineStyle, label=label))
if len(legend2) > 0 and self.ctrlPanel.showLegend:
leg = self.subplot.legend(handles=legend2)
for t in leg.get_texts():
if len(legendLines) > 0 and self.ctrlPanel.showLegend:
legend = self.subplot.legend(handles=legendLines)
for t in legend.get_texts():
t.set_fontsize('small')
for l in leg.get_lines():
for l in legend.get_lines():
l.set_linewidth(1)
self.canvas.draw()