إخفاء العلامات على jfreechart / PiePlot3D piechart
-
05-07-2019 - |
سؤال
وأنا أحاول الحصول على 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);
%>
المحلول
وهذا سوف إخفاء كل العلامات:
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