Well, that ended up being way more involved than I figured it would be. But because I enjoyed myself:
(Preemptive disclaimer: Don’t even think of trying to call in to support if this doesn’t work for you)
from org.jfree.chart.renderer.xy import XYLineAndShapeRenderer
from org.jfree.chart import LegendItem
legend = chart.getLegend()
plot = chart.getPlot()
renderer = plot.getRenderer()
class CustomRenderer(XYLineAndShapeRenderer):
def getLegendItem(self, dataset, series):
original = renderer.getLegendItem(dataset, series)
new = LegendItem(
original.getLabel(),
original.getDescription(),
original.getToolTipText(),
"", #urlText
original.getShape(),
original.getLinePaint(), #set fill paint to line paint
original.getOutlineStroke(),
original.getOutlinePaint()
)
new.setSeriesIndex(series)
new.setDatasetIndex(dataset)
return new
def getLegendItems(self):
collection = XYLineAndShapeRenderer.getLegendItems(self)
for ds in range(plot.getDatasetCount()):
for series in range(plot.getSeriesCount()):
legend = self.getLegendItem(ds, series)
collection.add(legend)
return collection
newRenderer = CustomRenderer(True, False)
newRenderer.setBaseSeriesVisibleInLegend(True)
legend.setSources([newRenderer])