主题:菜鸟请教个问题
liaosuzhu
[专家分:0] 发布于 2008-09-28 22:04:00
横坐标是123... 纵坐标是abc...(纵坐标值之间不具任何关系 共50个)
能否建立这种坐标系 并能绘制平滑线散点图或折线图
回复列表 (共2个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2008-09-29 12:28:00
折线图很好做。会做折线图了,平滑曲线也可以做。
先说折线图。把曲线绘制到picture1里。
假定你的数据分别在数组x(1 to 50)和数组y(1 to 50)里存放(当然也可以在二位数组数组w(1 to 50,1 to 2)里)
第一走,找出x的最大值和最小值,分别存放到xmax和xmin里面;找出y的最大值和最小值,分别存放到ymax和ymin里面。这就是坐标的范围(如果要美观,就要把最大值放大点,大最小值减小点。不做也可以)。这第一步,你应该是可以自己做的。
第二步,设置picture的坐标:Picture1.Scale (xmin, ymax)-(xmax, ymin)
第三步,画纵横轴。
例如分划刻度的单位是100(这也可以自动取定,可以作为你下一步考虑的问题)。如果ymax和ymin异号,y0=0;否则如果同为负值,y0=int(ymax)-100;否则,y0=int(ymin)+100。画横轴,picture1.line (xmin,y0)-(xmax,y0)。在x轴上分划,标注。for i= (int(xmin/100+)+1)*100 to (int(xmax/100)+1)*100 step 100: picture1.line (i,y0)-(i,y0+20)'这里20是分划线的长度:next i
然后照此画纵轴。
当然,这里的分划线长度,也可以自动确定,目前先人工设定。两个轴也可以带箭头,设置周的名称和单位,都留待下步。
第四步,画曲线。
x0=x(1)
y0=y(1)
for i=2 to 50
picture1.line (x0,y0)-(x(i),y(i))
x0=x(i)
y0=y(i)
next i
这样,折线图就成了。当然也可在这点上标注坐标值,画上圆圈。
再说平滑曲线,就是在最后不用picture1.line (x0,y0)-(x(i),y(i)),而采用一种插值算法来填补点之间的位置。这就要有一定的数学功底。
如果需要,折线的完整程序,我可以提供。
板凳
dgwdgw [专家分:100] 发布于 2008-09-29 19:55:00
楼上提供一个完整的曲线图,然我门学习啊
我来回复