美文网首页R数据科学与R语言数据
R语言\Matlab\Mathematic三维图像

R语言\Matlab\Mathematic三维图像

作者: 周一ing | 来源:发表于2019-06-10 10:30 被阅读35次

    R语言lattice包三维散点图

    实现效果:不同starRating水平下,数据在log(reviewCount)和score,discount三个维度的空间的数据分布。

    代码

    library('lattice')
    cloud(log(reviewCount) ~ score*discount |  starRating,data=all,scales=list(arrows=FALSE))
    
    #lattice图形不受par()函数的影响,它使用的默认设置在一个大的列表对象中,
    #可以通过trellis.par.get()函数获得并通过trellis.par.set()函数更改。
    mysettings <- trellis.par.get()
    names(mysettings)
    #修改Z轴标签文本大小。
    mysettings$par.zlab.text$cex<-0.8
    trellis.par.set(mysettings)
    update(mygraph)
    

    参数解释:
    log(reviewCount) ~ score*discount | starRating,表示绘制的公式,log(reviewCount)是z坐标变量
    score是横坐标变量,discount是纵坐标变量,starRating是分类变量。
    data=all指定数据集为all,
    scales=list(arrows=FALSE)显示刻度,如果要指定坐标轴的范围,可以用xlim=c(2,10),ylim...,
    坐标轴文本添加xlab,ylab,参数和其它绘图函数比较像。

    结果:


    image.png

    matlab三维曲面图

    实现原理类似于将两个自变量m,x变成笛卡儿积的一一对应方阵,然后计算出每个(m,x)的y值再画三维图像,所以m,x取值范围需一样

    m=[-10:70]
    x=[-10:70]
    [m,x]=meshgrid(m,x) 
    y=4.71+0.02*x-0.0005*(x.^2)-0.0008*m*x+0.00002*m*(x.^2)+0.03*m
    plot3(x,m,y)
    legend('low','high')%加图例
    xlabel("...")%x轴名字
    ylabel("...")%y轴名字
    

    mathematic三维曲面图

    优点是m,x取值范围可以不一致,matlab应该也能做到,但没有探究

    {x, 2, 10}, {m, 2, 9}表示取值范围

    Plot3D[4.79-0.27*x-0.34*(x^2)-0.12*m*x-0.13*m*(x^2)+0.92*m, {x, 2, 10}, {m, 2, 9}]
    AxesLabel -> {rating,Crating,log(reviewCount)}]
    
    

    结果呈现类似这样(和上面代码不对应的)

    image.png

    相关文章

      网友评论

        本文标题:R语言\Matlab\Mathematic三维图像

        本文链接:https://www.haomeiwen.com/subject/zvyuxctx.html