教程列表
开源项目
知识点
相关文章
更多最近更新
更多JFreeChart创建条形图BarChart
2019-04-27 15:05|来源: 网路
本章演示了如何使用JFreeChart从一个给定的业务数据创建条形图。
条形图使用不同的方位(水平或垂直)条,以显示不同类别的比较。图表中的一个轴(域轴)示出了特定的域进行比较,并在另一个轴(范围轴)表示的离散值。
业务数据
下面的例子描述了各种汽车用统计柱状图。以下是汽车品牌以及它们的不同特点,我们将展示使用一个条形图的列表:
汽车 | 速度 | 用户评价 | 公里数 | 安全性 |
---|---|---|---|---|
Fiat | 1.0 | 3.0 | 5.0 | 5.o |
Audi | 5.0 | 6.0 | 10.0 | 4.0 |
Ford | 4.0 | 2.0 | 3.0 | 6.0 |
基于AWT的应用
以下是对从上述给定的信息创建条形图的代码。此代码可以在AWT的应用程序嵌入一个条形图。
import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class BarChart_AWT extends ApplicationFrame { public BarChart_AWT( String applicationTitle , String chartTitle ) { super( applicationTitle ); JFreeChart barChart = ChartFactory.createBarChart( chartTitle, "Category", "Score", createDataset(), PlotOrientation.VERTICAL, true, true, false); ChartPanel chartPanel = new ChartPanel( barChart ); chartPanel.setPreferredSize(new java.awt.Dimension( 560 , 367 ) ); setContentPane( chartPanel ); } private CategoryDataset createDataset( ) { final String fiat = "FIAT"; final String audi = "AUDI"; final String ford = "FORD"; final String speed = "Speed"; final String millage = "Millage"; final String userrating = "User Rating"; final String safety = "safety"; final DefaultCategoryDataset dataset = new DefaultCategoryDataset( ); dataset.addValue( 1.0 , fiat , speed ); dataset.addValue( 3.0 , fiat , userrating ); dataset.addValue( 5.0 , fiat , millage ); dataset.addValue( 5.0 , fiat , safety ); dataset.addValue( 5.0 , audi , speed ); dataset.addValue( 6.0 , audi , userrating ); dataset.addValue( 10.0 , audi , millage ); dataset.addValue( 4.0 , audi , safety ); dataset.addValue( 4.0 , ford , speed ); dataset.addValue( 2.0 , ford , userrating ); dataset.addValue( 3.0 , ford , millage ); dataset.addValue( 6.0 , ford , safety ); return dataset; } public static void main( String[ ] args ) { BarChart_AWT chart = new BarChart_AWT("Car Usage Statistics", "Which car do you like?); chart.pack( ); RefineryUtilities.centerFrameOnScreen( chart ); chart.setVisible( true ); } }
保持BarChart_AWT.java文件中的Java代码,然后从命令提示符下编译并运行它,如下所示:
$javac BarChar_AWT.java $java BarChart_AWT
如果一切顺利,它会编译并运行生成以下条形图:
JPEG创建图像
让我们重新写上面的例子中,使用命令行生成JPEG图像。
import java.io.*; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.chart.ChartUtilities; public class BarChart { public static void main( String[ ] args )throws Exception { final String fiat = "FIAT"; final String audi = "AUDI"; final String ford = "FORD"; final String speed = "Speed"; final String millage = "Millage"; final String userrating = "User Rating"; final String safety = "safety"; final DefaultCategoryDataset dataset = new DefaultCategoryDataset( ); dataset.addValue( 1.0 , fiat , speed ); dataset.addValue( 3.0 , fiat , userrating ); dataset.addValue( 5.0 , fiat , millage ); dataset.addValue( 5.0 , fiat , safety ); dataset.addValue( 5.0 , audi , speed ); dataset.addValue( 6.0 , audi , userrating ); dataset.addValue( 10.0 , audi , millage ); dataset.addValue( 4.0 , audi , safety ); dataset.addValue( 4.0 , ford , speed ); dataset.addValue( 2.0 , ford , userrating ); dataset.addValue( 3.0 , ford , millage ); dataset.addValue( 6.0 , ford , safety ); JFreeChart barChart = ChartFactory.createBarChart( "CAR USAGE STATIStICS", "Category", "Score", dataset,PlotOrientation.VERTICAL, true, true, false); int width = 640; /* Width of the image */ int height = 480; /* Height of the image */ File BarChart = new File( "BarChart.jpeg" ); ChartUtilities.saveChartAsJPEG( BarChart , barChart , width , height ); } }
保存BarChart.java文件中如上面的Java代码,然后从命令提示符下编译并运行它,如下所示:
$javac BarChart.java $java BarChart
如果一切顺利,它会编译并运行在当前的目录中创建JPEG图像文件namedBarChart.jpeg
相关问答
更多-
您可以在堆积条形图属性部分中将“范围轴最小值表达式”设置为0。 要添加打开属性面板,请单击图表并选择Windows - >属性,然后添加 Range Axis Min Value Expression = 0 setting maxto a value is a solution but it has a side-effect for me. It fixes the scale of the axis so if the max value is very big ...
-
请注意,您使用的是格子包中的函数,而不是基本包中的函数,它具有不同的参数。 要完成你想要的,你应该设置scales参数(参见?barchart文档); 有两种选择可以产生不同的结果: # option 1: we're saying that y ticks must be set at coordinate = NULL barchart(Acolumn3 ~ Acolumn1,ylab="y axis", groups=Acolumn2, auto.key = list(columns = 3), ...
-
条形图和标准错误(barchart and standard errors)[2023-01-28]
尝试这样的事情: library(plyr) library(ggplot2) summary(dfx) # for example, each variable dfx$interaction <- interaction(dfx$group, dfx$sex) ddply(dfx, .(interaction), summary) #group by interaction, summary on dfx ggplot(dfx, aes(x = sex, y = age, fill = group)) ... -
Highcharts:条形图(Highcharts : barchart)[2022-08-02]
Highcharts期望setExtremes()方法的int值。 所以你应该得到滑块的价值; $('input[name="slider1"]').val(); 然后将此值解析为int ; parseInt($('input[name="slider1"]').val()); 在这里我为你修好了 : jsFiddle Highcharts are expecting int values for setExtremes() method. So you should get the value of ... -
使用您提供的数据,我重新编写了文档中给出的示例jmcnamara(链接在这里 ),以满足您的需求。 完整代码: import pandas as pd import xlsxwriter headings = [' ', 'Apr 2017', 'May 2017'] data = [ ['NGN', 'UGX', 'KES', 'TZS', 'CNY'], [5816, 1121, 115, 146, 1], [7089, 1095, 226, 120, 0], ] #open ...
-
我没有能力。 相反,我必须创建与0 = -80对应的自己的标签,依此类推。 I wasnt able to. Instead I had to create my own labels that corresponded with 0 = -80 and so on.
-
重点是GradientBarPainter一个功能。 相反,请尝试使用StandardBarPainter ,如此处所示 。 The highlight is a feature of GradientBarPainter. Instead, try StandardBarPainter, as suggested here.
-
R中的条形图帮助(Barchart help in R)[2020-02-12]
尝试转置矩阵: barplot(t(as.matrix(hydrocarbon3)), beside=T) 基本上, barplot将按照它们在矩阵中显示的顺序绘制事物,因为矩阵只是一个向量包裹的向量,意味着barplot将绘制第一列的所有值,然后是第二列的所有值,等等。 Try transposing your matrix: barplot(t(as.matrix(hydrocarbon3)), beside=T) Basically, barplot will plot things in the ... -
问题是,您正在调整for循环中的画布大小,这会扭曲画布,使之前的所有绘图都消失。 你应该在for循环之外做画布调整大小的东西,就像这样...... var canvas = document.getElementById("ttmrev"); var c = canvas.getContext("2d"); var currX = 0; var width = 40; chrr1 = [333, 222, 666, 1200, 444, 1000]; var max_value = Math. ...
-
因此,如果我理解正确,你真的不想要一个堆积的条形图,你想要在m后面绘制。 你可以通过将zorder设置为低于w : p1 = plt.bar(ind, m, width, color='r',zorder=2) p2 = plt.bar(ind, w, width, color='y',zorder=1) 或者,如果要保留bottom=m选项,则需要从w减去m 。 首先,您需要将m和w转换为numpy.array 。 然后你可以像这样绘制p2 : p2 = plt.bar(ind, np.maximum( ...