㈠ JFreeChart镄勮湗铔涚绣锲撅纸鍙堢О闆疯揪锲撅纴缃戠姸锲撅级搴旇ユ庝箞鍐椤晩
缁欎綘涓涓鎴戜粠涓婂弽缂栬疟杩囨潵镄勶纴鏄涓闆疯揪锲撅纴鍖呭姞杞藉逛简浣犲氨鑳界湅鍒版晥鏋
package demo;
import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.;
import org.jfree.chart.plot.SpiderWebPlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.*;
public class SpiderWebChartDemo1 extends ApplicationFrame
{
public SpiderWebChartDemo1(String s)
{
super(s);
JPanel jpanel = createDemoPanel();
jpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(jpanel);
}
private static CategoryDataset createDataset()
{
String s = "First";
String s1 = "Second";
String s2 = "Third";
String s3 = "Category 1";
String s4 = "Category 2";
String s5 = "Category 3";
String s6 = "Category 4";
String s7 = "Category 5";
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(1.0D, s, s3);
defaultcategorydataset.addValue(4D, s, s4);
defaultcategorydataset.addValue(3D, s, s5);
defaultcategorydataset.addValue(5D, s, s6);
defaultcategorydataset.addValue(5D, s, s7);
defaultcategorydataset.addValue(5D, s1, s3);
defaultcategorydataset.addValue(7D, s1, s4);
defaultcategorydataset.addValue(6D, s1, s5);
defaultcategorydataset.addValue(8D, s1, s6);
defaultcategorydataset.addValue(4D, s1, s7);
defaultcategorydataset.addValue(4D, s2, s3);
defaultcategorydataset.addValue(3D, s2, s4);
defaultcategorydataset.addValue(2D, s2, s5);
defaultcategorydataset.addValue(3D, s2, s6);
defaultcategorydataset.addValue(6D, s2, s7);
return defaultcategorydataset;
}
private static JFreeChart createChart(CategoryDataset categorydataset)
{
SpiderWebPlot spiderwebplot = new SpiderWebPlot(categorydataset);
spiderwebplot.setStartAngle(54D);
spiderwebplot.setInteriorGap(0.40000000000000002D);
spiderwebplot.setToolTipGenerator(new ());
JFreeChart jfreechart = new JFreeChart("Spider Web Chart Demo 1", TextTitle.DEFAULT_FONT, spiderwebplot, false);
LegendTitle legendtitle = new LegendTitle(spiderwebplot);
legendtitle.setPosition(RectangleEdge.BOTTOM);
jfreechart.addSubtitle(legendtitle);
return jfreechart;
}
public static JPanel createDemoPanel()
{
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}
public static void main(String args[])
{
SpiderWebChartDemo1 spiderwebchartdemo1 = new SpiderWebChartDemo1("SpiderWebChartDemo1");
spiderwebchartdemo1.pack();
RefineryUtilities.centerFrameOnScreen(spiderwebchartdemo1);
spiderwebchartdemo1.setVisible(true);
}
}
㈡ 程序员如何轻松实现数据可视化
这里以Web前端为例,简单介绍一下程序员是如何实现前端数据可视化的,主要内容如下:
Highcharts.js
这是一个纯粹的JavaScript可视化库,完美支持移动端,可以快速的为Web网站添加具有交互性的图表(包括曲线图、散点图、柱状图、条形图、饼图等),个人可以免费学习使用,下面我简单介绍一下这个库的使用:
1.首先,引入Highcharts.js库,这里以最简单的CDN引入为例(也可在本地下载后引入),直接在script标签src属性中指定CDN地址就行,基本思路先创建一个div容器,然后通过JSAPI引入图表,Html部分代码如下,非常高察简单:
2.接着就是JSAPI配置图表,这里直接根据官方文档配置就行,每个参数介绍的都非常详细,也有示例可供参考,添加到上面的Html代码图标配置那块就行,测试代码如下,一个简单的柱状图:
用浏览器打开这个html文件,效果如下,就是我们需要绘制的图表,还不错:
3.官网也提供了许多的示例,几乎涵盖了各种图表数据的制作,非常适合初学者学习,注释的很详细,也可在线编辑运行,感兴趣的话,可以学习一下,非常有用:
ECharts.js
这是网络设计开发的一个Web前端可视化库,可以流畅的运行在PC和移动设备上,并且提供高度可定制化的图表,种类繁多,交互丰富,下面我简单介绍一下这个库的使用:
1.首先,引入ECharts.js库,这里也直接src引入就行(或者本地引入),基本思路和Highcharts.js一样,先创建一个div容器,然后通过JS引入图表就行,Html部分代码如下,也很简单:
2.接着也是JSAPI配置图表并进行显示,这里也按照官网文档设置就行,非常详细,测试代码如下,一个简单的柱状图,添加到上面的Htmlecharts图表那块:
用浏览器打开这个html文件,效果如下,非常不错:
3.更多图表示例可以参考官网,包括地图、热力图、雷达图、极坐标图等,介绍的非常详细,也可在线编辑运行,效果非常不错:
D3.js
这是一个非常强大的前端可视化库,出现的比较早,组件和属性众多,几乎可以绘制各种图表,眼花缭乱,下面我简单介绍一下这个库的使用:
1.首先,引入D3.js库,这个直接通过script标签的src属性在线引入就行,Html代码如下,很简单,很好理解:
2.接着就是在script那部分进行图戚模茄表绘制,这里都是函数式的编程,代码量比较多(但设置操作更码帆灵活),需要一定的JS基础,对于初学者来说,理解使用起来还是具有一定的难度:
浏览器打开的效果如下,非常不错:
3.更多示例可以到GitHub官网上查看,介绍的非常详细,也有源代码可以下载到本地参考学习:
至此,这里就简单介绍完了程序员如何进行Web前端数据可视化。总的来说,这3个前端可视化库使用起来都非常不错,Highcharts.js和ECharts.js适合初学者学习和掌握,文档和资料也比较多,D3.js学习起来具有一定的难度,资料也是以官方的英文教程为主,感兴趣的话,可以研究一下,毕竟功能非常强大,当然,你也可以使用其他可视化库,像G2等也都非常不错,网上也有相关教程和资料可供参考,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言补充。
㈢ 用python将数据(实时变化)显示到雷达图上。
1、以固定点画多个圆
2、每个点的坐标必须预先知道(当然坐标一直在边,那么在每次坐标变化后,都要获取到最新的坐标值)
3、依据坐标值在图上画出圆点。
这只是思路,没有源代码,只能帮到此步