Avoid pushing graph inwards because of labels

This commit is contained in:
DarkPhoenix
2019-08-16 19:20:11 +03:00
parent df7ad187f5
commit a724347236

View File

@@ -172,7 +172,7 @@ class GraphCanvasPanel(wx.Panel):
if self.graphFrame.ctrlPanel.showY0:
allYs.add(0)
canvasMinY, canvasMaxY = self._getLimits(allYs, minExtra=0.05, maxExtra=0.1)
canvasMinX, canvasMaxX = self._getLimits(allXs, minExtra=0.02, maxExtra=0.05)
canvasMinX, canvasMaxX = self._getLimits(allXs, minExtra=0.02, maxExtra=0.02)
self.subplot.set_ylim(bottom=canvasMinY, top=canvasMaxY)
self.subplot.set_xlim(left=canvasMinX, right=canvasMaxX)
# Process X marks line
@@ -183,16 +183,25 @@ class GraphCanvasPanel(wx.Panel):
minY = min(allYs, default=None)
maxY = max(allYs, default=None)
xMark = max(min(self.xMark, maxX), minX)
# If in top 10% of X coordinates, align labels differently
if xMark > canvasMinX + 0.9 * (canvasMaxX - canvasMinX):
labelAlignment = 'right'
labelPrefix = ''
labelSuffix = ' '
else:
labelAlignment = 'left'
labelPrefix = ' '
labelSuffix = ''
# Draw line
self.subplot.axvline(x=xMark, linestyle='dotted', linewidth=1, color=(0, 0, 0))
# Draw its X position
if chosenX.unit is None:
xLabel = ' {}'.format(roundToPrec(xMark, 4))
xLabel = '{}{}{}'.format(labelPrefix, roundToPrec(xMark, 4), labelSuffix)
else:
xLabel = ' {} {}'.format(roundToPrec(xMark, 4), chosenX.unit)
xLabel = '{}{} {}{}'.format(labelPrefix, roundToPrec(xMark, 4), chosenX.unit, labelSuffix)
self.subplot.annotate(
xLabel, xy=(xMark, canvasMaxY - 0.01 * (canvasMaxY - canvasMinY)), xytext=(-1, -1), annotation_clip=False,
textcoords='offset pixels', ha='left', va='top', fontsize='small')
xLabel, xy=(xMark, canvasMaxY - 0.01 * (canvasMaxY - canvasMinY)), xytext=(0, 0), annotation_clip=False,
textcoords='offset pixels', ha=labelAlignment, va='top', fontsize='small')
# Get Y values
yMarks = set()
@@ -239,8 +248,8 @@ class GraphCanvasPanel(wx.Panel):
# Draw Y values
for yMark in yMarks:
self.subplot.annotate(
' {}'.format(yMark), xy=(xMark, yMark), xytext=(-1, -1),
textcoords='offset pixels', ha='left', va='center', fontsize='small')
'{}{}{}'.format(labelPrefix, yMark, labelSuffix), xy=(xMark, yMark), xytext=(0, 0),
textcoords='offset pixels', ha=labelAlignment, va='center', fontsize='small')
legendLines = []
for i, iData in enumerate(legendData):