Allow multiple runs in axis title
Created originally on Bitbucket by madphysicist (Joseph Fox-Rabinovitz)
I am trying to add a colored run of unicode characters to an axis title to simulate a simplified legend entry on a scatter plot.
from openpyxl import *
book = workbook.Workbook()
sheet = book.active
chart = chart.ScatterChart()
# Add some data to the chart.
sheet.add_chart(chart, 'A1')
chart.y_axis.title = 'blah'
prop = drawing.text.CharacterProperties(solidFill='FF0000')
run = drawing.text.RegularTextRun(rPr=prop, t='\u00b7\u00b7\u00b7\u00b7')
chart.y_axis.title.tx.rich.paragraphs.append(drawing.text.Paragraph(r=run))
There are a couple of issues here. The major one is that there is no way to append run
above to the existing chart.y_axis.title.tx.rich.paragraphs[0]
. This could likely be fixed by changing
r = Typed(expected_type=RegularTextRun, allow_none=True)
to
r = Sequence(expected_type=RegularTextRun, allow_none=True)
on line 532 of drawing.text
(Paragraph
class), but I am not 100% sure about that. The minor issue is that the line prop = drawing.text.CharacterProperties(solidFill='00FF00')
does not actually do anything.
By the way, before I append the new paragraph, I tried doing
chart.y_axis.title.tx.rich.paragraphs[-1].br = None
to simulate multiple runs by possibly eliminating the line break between paragraphs, but that did not appear to work at all (still got the label on two lines).
I am using OpenPyXL 2.3.2 on a CentOS 6.8 machine, viewing the results on Windows 7, MS Office Excel 2013.
Here is an output of what I am getting as well as what I am trying to achieve (ignore the data part of the plot):
Actual result
What I would like to see