Anyone know of a way or have a work around to only enable labels for one series on the bar chart? I'm also open to other ways to make both numbers show without stacking them on top of each other as the bars get full.
I have a similar thing i was working on but we never deployed. the way i did what you are asking is set the label paint color to a 0 opacity “renderer.setSeriesItemLabelPaint(1, Color(0,0,0,0))”
from java.awt import Color
from java.awt import Font
from org.jfree.chart.labels import StandardCategoryItemLabelGenerator
from org.jfree.chart.labels import ItemLabelPosition
from org.jfree.chart.labels import ItemLabelAnchor
from org.jfree.ui import TextAnchor
class myLabelGenerator(StandardCategoryItemLabelGenerator):
def generateLabel(self,dataset,series, category):
value = dataset.getValue(series,category)
if value == 0:
return None
else:
return str(int(value))
plot = chart.getPlot()
renderer = plot.getRenderer()
renderer.setBaseItemLabelFont(Font("Dialog", Font.BOLD, 16))
renderer.setItemLabelGenerator(myLabelGenerator())
renderer.setSeriesItemLabelPaint(1, Color(0,0,0,0))
renderer.setItemLabelsVisible(True)
renderer.setBasePositiveItemLabelPosition(ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT))
renderer.setSeriesBarWidth(1,0.4)
chart.legend.setItemFont(Font("SansSerif", Font.BOLD, 20))
I am referring your code with vertical layered bar chart. I am not able to see the label on any bar.