سؤال

وأنا أحاول الحصول على PieChart3D jfreechart لإخفاء العلامات. لا أستطيع العثور على أي شيء في الوثائق.

وأي شخص يعرف كيفية القيام بذلك؟

<% 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 كافيه / jfreechart / المعهد / جافادوك / المنظمة / 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