Ruby是什么意思。。

Python015

Ruby是什么意思。。,第1张

Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。

Ruby的变量有一定的规则,以$开头的一定是全局变量,以@开头的都是实例变量,而以@@开头的是类变量。

常数则以大写字母开头这种方法,对文本编辑器的命令补全很有帮助,如在vim下先键入$及开头字母,再敲击Ctrl+p,则可专门补全本文件以及关联文件中的全局变量,perl与php亦有此优点。

已经定义的类可以在运行时修改

Ruby是动态语言,你可以在程序中修改先前定义过的类。 也可以在某个类的实例中定义该实例特有的方法,这叫做单例方法。

使用Ruby可以写出简短而又功能强大的代码

下面的方法用来完成两个矩阵的乘积

注:ruby标准库中已包含矩阵库 Matrix

如果读取得到的二维数组 ,存储的是每个像素的颜色值 , 那么很简单, 可以使用 数组转换到图片(网上有很多的代码) , 然后绘制到JFrame等窗体上.

如果读取的二维数组,是类似于下面这种形式

{{2018,20},{2017,30},{2016,15}}

可以使用第三方的 JFreeChart 等 进行图表绘制, 优点 可以输出图片,可以显示到网页或者JFrame/Frame窗口上. 缺点: 效果不是很好看.实现动态效果比较麻烦

可以使用JavaFX 自带的图表组件进行绘制. 优点: 默认的效果不错, 动态效果实现起来也很简单 缺点: 一般只用于本地客户端上的显示

使用 BufferedImage和Graphics 类来绘制 一个图片, 优点: 自定义程度高, 可以充分发挥想象,绘制一个拉风的效果. 缺点: 有点麻烦.代码有点长了.[一般只用于验证码等小图片的绘制]

JFreeChart 效果图

JavaFX 效果图( 里面的数据是随即生成的,只是为了测试效果)

JavaFX饼状图的参考代码 ,我写了很多的注释

import javafx.animation.*

import javafx.application.Application

import javafx.collections.*

import javafx.event.ActionEvent

import javafx.event.EventHandler

import javafx.geometry.Side

import javafx.scene.Scene

import javafx.scene.chart.PieChart

import javafx.scene.chart.PieChart.Data

import javafx.scene.control.*

import javafx.scene.effect.DropShadow

import javafx.scene.input.MouseEvent

import javafx.scene.layout.StackPane

import javafx.scene.paint.Color

import javafx.stage.Stage

import javafx.util.Duration

//

public class A03_PieChart03 extends Application {

public static void main(String[] args) {

launch(args)//启动程序

}

@Override

public void start(Stage primaryStage) throws Exception {

StackPane root = new StackPane()// 栈布局面板

Scene scene = new Scene(root, 500, 400)//场景

PieChart pc = new PieChart()//饼状图

ObservableList<Data> datas = getDate()

pc.setData(datas)//设置饼状图的初始数据

pc.setTitle("流行技术市场占有率")// 设置饼图标题

pc.setLegendSide(Side.LEFT)// 图例 靠左

pc.setClockwise(false)// 逆时针显示

//pc.setLabelsVisible(false)// 隐藏饼状图上面的文字描述

DropShadow ds=new DropShadow() // 阴影效果

ds.setOffsetX(3)//x轴偏移3

ds.setColor(Color.GREY)//阴影颜色

pc.setEffect(ds)//给饼状图设置阴影效果

root.getChildren().add(pc)//把饼状图添加到面板上

primaryStage.setTitle("动态饼状图")//设置标题

primaryStage.setScene(scene)//设置主场景

primaryStage.show()//显示窗口

// -------如果需要动态效果 , 那么就需要下面的代码---------

Timeline tl = new Timeline() //时间轴动画

tl.getKeyFrames().add(new KeyFrame(Duration.millis(800), new EventHandler<ActionEvent>() {

@Override

public void handle(ActionEvent event) {

for (Data data : pc.getData()) {

data.setPieValue(Math.random()*50)//数据随即改变.(只是为了测试效果)

}

}}))

tl.setCycleCount(Animation.INDEFINITE)//循环次数无限

tl.play() // 开始动画

}

// 初始的数据

private ObservableList<Data> getDate() {

ObservableList<Data> data = FXCollections.observableArrayList(new PieChart.Data("Java", 36.8),

new PieChart.Data("C++", 16.2), new PieChart.Data("Python", 12.3), new PieChart.Data("Ruby", 9.5),

new PieChart.Data("JavaScript", 21.5))

return data

}

}