jfreechart折线图乱码问题 10
用的包是jfreechart-0.9.18.jar,jcommon-0.9.3.jar这两个在本机上没有乱码问题放上服务器后中文就是乱码显示成小方格设置字体也没有效果pr...
用的包是jfreechart-0.9.18.jar,jcommon-0.9.3.jar这两个 在本机上没有乱码问题 放上服务器后 中文就是乱码 显示成小方格 设置字体也没有效果
private DefaultCategoryDataset dataset = new DefaultCategoryDataset();
public void setValue(double sum, String line, String wfield) {
dataset.addValue(sum, line, wfield);
}
public String generateLineChart(String title, String wfield, String hfield,
HttpSession session, PrintWriter pw, int wPhoto, int hPhoto) {
String filename = null;
try {
final JFreeChart chart = ChartFactory.createLineChart(title, // 图表标题
wfield, // 横轴的显示标签
hfield, // 纵轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
true, // 是否生成提示工具 tooltips
false // 是否生成URL链接
);
StandardLegend legend = (StandardLegend) chart.getLegend();// 生成图例
legend.setDisplaySeriesShapes(true);// 显示图例形状
legend.setShapeScaleX(1.5);// 设置图例X轴的大小
legend.setShapeScaleY(1.5);// 设置图例Y轴的大小
legend.setDisplaySeriesLines(true);// 显示图示项的横线
// 设置图片的背景色
chart.setBackgroundPaint(new java.awt.Color(189, 235, 255));
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(new Color(239, 251, 255));// 生成图片中墙体的背景色
plot.setRangeGridlinePaint(Color.black);// 生成图片中格子线的颜色
// 没有数据时显示的消息
plot.setNoDataMessage("没有相关统计数据");
plot.setNoDataMessageFont(new Font("黑体", Font.CENTER_BASELINE, 16));
plot.setNoDataMessagePaint(Color.RED);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());// 设置图中的刻度线的单位
rangeAxis.setAutoRangeIncludesZero(true);// 强制在自动选择的数据范围中包含0
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot
.getRenderer();
renderer.setDrawShapes(true);// 折线的数据点根据分类使用不同的形状
renderer.setItemLabelsVisible(true);// 显示每个点上的数据值的提示工具,数据标签是否可见
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
// 500是图片长度,300是图片高度
filename = ServletUtilities.saveChartAsPNG(chart, wPhoto, hPhoto,
info, session);
ChartUtilities.writeImageMap(pw, filename, info);
pw.flush();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Line====" + filename);
return filename;
}
jsp页面的编码是GBK 展开
private DefaultCategoryDataset dataset = new DefaultCategoryDataset();
public void setValue(double sum, String line, String wfield) {
dataset.addValue(sum, line, wfield);
}
public String generateLineChart(String title, String wfield, String hfield,
HttpSession session, PrintWriter pw, int wPhoto, int hPhoto) {
String filename = null;
try {
final JFreeChart chart = ChartFactory.createLineChart(title, // 图表标题
wfield, // 横轴的显示标签
hfield, // 纵轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
true, // 是否生成提示工具 tooltips
false // 是否生成URL链接
);
StandardLegend legend = (StandardLegend) chart.getLegend();// 生成图例
legend.setDisplaySeriesShapes(true);// 显示图例形状
legend.setShapeScaleX(1.5);// 设置图例X轴的大小
legend.setShapeScaleY(1.5);// 设置图例Y轴的大小
legend.setDisplaySeriesLines(true);// 显示图示项的横线
// 设置图片的背景色
chart.setBackgroundPaint(new java.awt.Color(189, 235, 255));
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(new Color(239, 251, 255));// 生成图片中墙体的背景色
plot.setRangeGridlinePaint(Color.black);// 生成图片中格子线的颜色
// 没有数据时显示的消息
plot.setNoDataMessage("没有相关统计数据");
plot.setNoDataMessageFont(new Font("黑体", Font.CENTER_BASELINE, 16));
plot.setNoDataMessagePaint(Color.RED);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());// 设置图中的刻度线的单位
rangeAxis.setAutoRangeIncludesZero(true);// 强制在自动选择的数据范围中包含0
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot
.getRenderer();
renderer.setDrawShapes(true);// 折线的数据点根据分类使用不同的形状
renderer.setItemLabelsVisible(true);// 显示每个点上的数据值的提示工具,数据标签是否可见
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
// 500是图片长度,300是图片高度
filename = ServletUtilities.saveChartAsPNG(chart, wPhoto, hPhoto,
info, session);
ChartUtilities.writeImageMap(pw, filename, info);
pw.flush();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Line====" + filename);
return filename;
}
jsp页面的编码是GBK 展开
3个回答
展开全部
最主要的是设置font
jfreechart中文乱码问题解决方案(转)
柱状图(CategoryPlot):
CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象
CategoryAxis domainAxis=plot.getDomainAxis();
//水平底部列表
domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14));
//水平底部标题
domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12));
//垂直标题
ValueAxis rangeAxis=plot.getRangeAxis();//获取柱状
rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15));
chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));
饼图(PiePlot):
JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图", dataset, true, false, false);
chart.getTitle().setFont(new Font("黑体",Font.BOLD,20));//设置标题字体
PiePlot piePlot= (PiePlot) chart.getPlot();//获取图表区域对象
piePlot.setLabelFont(new Font("黑体",Font.BOLD,10));
chart.getLegend().setItemFont(new Font("黑体",Font.BOLD,10));
时序图(TimeSeries)
XYPlot plot = (XYPlot) chart.getPlot();
//纵轴字体
plot.getRangeAxis().setLabelFont(new Font("宋体", Font.BOLD, 15));
//横轴框里的标题字体
chart.getLegend().setItemFont(new Font("宋体", Font.ITALIC, 15));
//横轴列表字体
plot.getDomainAxis().setTickLabelFont(new Font("新宋体", 1, 15));
//横轴小标题字体
plot.getDomainAxis().setLabelFont(new Font("新宋体", 1, 12));
折线图
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 15));
chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));
CategoryAxis domainAxis = plot.getDomainAxis();
/*------设置X轴坐标上的文字-----------*/
domainAxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 11));
/*------设置X轴的标题文字------------*/
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
/*------设置Y轴坐标上的文字-----------*/
numberaxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 12));
/*------设置Y轴的标题文字------------*/
numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12))
jfreechart中文乱码问题解决方案(转)
柱状图(CategoryPlot):
CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象
CategoryAxis domainAxis=plot.getDomainAxis();
//水平底部列表
domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14));
//水平底部标题
domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12));
//垂直标题
ValueAxis rangeAxis=plot.getRangeAxis();//获取柱状
rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15));
chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));
饼图(PiePlot):
JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图", dataset, true, false, false);
chart.getTitle().setFont(new Font("黑体",Font.BOLD,20));//设置标题字体
PiePlot piePlot= (PiePlot) chart.getPlot();//获取图表区域对象
piePlot.setLabelFont(new Font("黑体",Font.BOLD,10));
chart.getLegend().setItemFont(new Font("黑体",Font.BOLD,10));
时序图(TimeSeries)
XYPlot plot = (XYPlot) chart.getPlot();
//纵轴字体
plot.getRangeAxis().setLabelFont(new Font("宋体", Font.BOLD, 15));
//横轴框里的标题字体
chart.getLegend().setItemFont(new Font("宋体", Font.ITALIC, 15));
//横轴列表字体
plot.getDomainAxis().setTickLabelFont(new Font("新宋体", 1, 15));
//横轴小标题字体
plot.getDomainAxis().setLabelFont(new Font("新宋体", 1, 12));
折线图
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 15));
chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));
CategoryAxis domainAxis = plot.getDomainAxis();
/*------设置X轴坐标上的文字-----------*/
domainAxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 11));
/*------设置X轴的标题文字------------*/
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
/*------设置Y轴坐标上的文字-----------*/
numberaxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 12));
/*------设置Y轴的标题文字------------*/
numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你在本机上运行是没问题的 那么很有可能是服务器的问题 你用的什么服务器 服务器的编码方式是什么样的?
追问
用的是tomcat的服务器 要怎样设置编码呢?
追答
例:
设置为gbk
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有没有字符过滤器,设置统一
追问
有啊 在配置文件中有设置
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询