算法(4th ed)(55):基础——基础编程模型 3.9.8

阅读数:16 2019 年 10 月 30 日 07:03

算法(4th ed)(55):基础——基础编程模型 3.9.8

(输入输出:标准绘图库(控制方法))

标准绘图库中还包含一些方法来改变画布的大小和比例、直线的颜色和宽度、文本字体、绘图时间(用于动画)等。可以使用在 StdDraw 中预定义的BLACKBLUECYANDARK_GRAYGRAYGREENLIGHT_GRAYMAGENTAORANGEPINKREDBOOK_REDWHITEYELLOW 等颜色常数作为 setPenColor() 方法的参数(可以用 StdDraw.RED 这样的方式调用它们)。画布窗口的菜单还包含一个选项用于将图像保存为适于在网上传播的文件格式。表 1.1.19 总结了 StdDraw 中静态控制方法的 API。

表 1.1.19 标准绘图库的静态(控制)方法的 API

public class StdDraw
    static void  setXscale(double x0, double x1)将 $x$ 的范围设为 $(x_0,x_1)$
    static void  setYscale(double y0, double y1)将 $y$ 的范围设为 $(y_0,y_1)$
    static void  setPenRadius(double r)将画笔的粗细半径设为 $r$
    static void  setPenColor(Color c)将画笔的颜色设为 $c$
    static void  setFont(Font f)将文本字体设为 $f$
    static void  setCanvasSize(int w, int h)将画布窗口的宽和高分别设为 $w$ 和 $h$
    static void  clear(Color c)清空画布并用颜色 $c$ 将其填充
    static void  show(int dt)显示所有图像并暂停 $dt$ 毫秒

在本书中,我们会在数据分析和算法的可视化中使用 StdDraw。表 1.1.20 是一些例子,我们在本书的其他章节和练习中还会遇到更多的例子。绘图库也支持动画——当然,这个话题只能在本书的网站上展开了。

表 1.1.20 StdDraw 绘图举例

数据 绘图的实现(代码片段) 结果
函数值
int N = 100;
StdDraw.setXscale(0, N);
StdDraw.setYscale(0, N*N);
StdDraw.setPenRadius(.01);
for (int i = 1; i <= N; i++)
{
StdDraw.point(i, i);
StdDraw.point(i, i*i);
StdDraw.point(i, i*Math.log(i));
}
随机数组
int N = 50;
double[] a = new double[N];
for (int i = 0; i < N; i++)
a[i] = StdRandom.random();
for (int i = 0; i < N; i++)
{
double x = 1.0*i/N;
double y = a[i]/2.0;
double rw = 0.5/N;
double rh = a[i]/2.0;
StdDraw.filledRectangle(x, y, rw, rh);
}
已排序的随机数组

评论

发布