Скрыть метки на jfreechart / круговой диаграмме PiePlot3D

StackOverflow https://stackoverflow.com/questions/1804145

  •  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);
    %>

http: //www.jfree .org / JFreeChart / API / Javadoc / орг / jfree / график / участок / PiePlot3D.html

Это было полезно?

Решение

Это скроет все метки:

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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top