- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
IDL没有内置饼图函数,我自己写了一个
以前也写了一个版本,不过逻辑比较幼稚,今天上午完善了一下
------------------------源代码------------------------
;该函数用于绘制饼图
;例如有N个扇形需要绘制,angle1和angle2是起始/终止角集合,r是扇形长度集合,color是配色集合
;angle1和2是方位角,角度制
;angle1和2顺序可颠倒,可以是负数
function pie,angle1,angle2,r,color
;大圆半径选最长者:
r1=max(r)
;扇形长度集合:
r2=r
;扇形个数:
n=n_elements(r2)
;转换为笛卡尔弧度制:
an1=(90.0-angle1)/180.0*!pi
an2=(90.0-angle2)/180.0*!pi
;生成大圆数据:
base_t=[0:360:360.0/1000]/180.0*!dpi
base_r=fltarr(1000)+r1
;画大圆:
fig1=polarplot(base_r,base_t,$
position=[0.1,0.1,0.9,0.9],$
/buffer,$
thick=1,$
yrange=[-r1,r1],$
xrange=[-r1,r1],$
axis_style=0,dimensions=[300,300])
;循环画扇形:
for i=0,n-1 do begin
sector_r=r2+fltarr(1000)
sector_an=findgen(1001)/1000.0*(an2-an1)+an1
x=sector_r*cos(sector_an)
y=sector_r*sin(sector_an)
fig2=polygon([0,x,0],[0,y,0],$
fill_color=color,color='k',$
thick=2,/data,/overplot)
endfor
;函数返回句柄可以修改题目等设置
return,fig1
end
------------------------使用示例------------------------
an1=[90,180,270,360]-180
an2=an1-45
r=[1,2,3,4]
color=['r','g','m','b']
fig=pie(an1,an2,r,color)
fig.title='题目'
fig.save,'C:\Users\Administrator\Desktop\饼图.jpg'
fig.close
结果如上图
|
|