Скрыть метки на jfreechart / круговой диаграмме PiePlot3D
-
05-07-2019 - |
Вопрос
Я пытаюсь заставить jfreechart PieChart3D скрыть ярлыки. Я ничего не могу найти в документации.
Кто-нибудь знает, как это сделать?
<% response.setContentType("image/png"); %><%@page import="org.jfree.data.general.*"%><%@page import="org.jfree.chart.*"%><%@page import="org.jfree.chart.plot.*"%><%@page import="java.awt.Color" %><%
DefaultPieDataset ds = (DefaultPieDataset)session.getAttribute("usagePieOutputDataset");
JFreeChart chart = ChartFactory.createPieChart3D
(
null, // Title
ds, // Dataset
false, // Show legend
false, // Use tooltips
false // Configure chart to generate URLs?
);
chart.setBackgroundPaint(Color.WHITE);
chart.setBorderVisible(false);
PiePlot3D plot = ( PiePlot3D )chart.getPlot();
plot.setDepthFactor(0.0);
plot.setLabelOutlinePaint(Color.LIGHT_GRAY);
plot.setLabelFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 10));
ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 150, 144);
%>
Решение
Это скроет все метки:
plot.setLabelGenerator(null); //null means no labels
Другие советы
На самом деле это кажется еще более простым способом, а также гораздо более коротким.
Просто сделайте раздачу меток самостоятельно (анонимная реализация) и сделайте вид, что нет меток для отображения, вернув ноль в getItemCount ()
.
plot.setLabelDistributor(new AbstractPieLabelDistributor() {
public int getItemCount() { return 0; }
public void distributeLabels(double minY,double height) {}
});
<Ч>
Старое решение:
Не знаю, есть ли более простой способ, но это должно сработать. Должен быть самоочевидным. Не показывать ссылки, установить некоторые цвета прозрачными и не создавать ярлыки. Остальное просто спроси.
Color transparent = new Color(0.0f,0.0f,0.0f,0.0f);
plot.setLabelLinksVisible(Boolean.FALSE);
plot.setLabelOutlinePaint(transparent);
plot.setLabelBackgroundPaint(transparent);
plot.setLabelShadowPaint(transparent);
plot.setLabelGenerator(new PieSectionLabelGenerator(){
@Override
public AttributedString generateAttributedSectionLabel(PieDataset dataset, Comparable key) {
return new AttributedString("");
}
@Override
public String generateSectionLabel(PieDataset dataset, Comparable key) {
return "";
}
});
Эта работа для меня:
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setTickLabelsVisible(false);
Не связан с StackOverflow