matlab 的m文件绘制的图像怎么在gui界面的axes中显示

matlab 的m文件绘制的图像怎么在gui界面的axes中显示,第1张

要在MATLAB GUI界面中的axes中显示m文件绘制的图像,可以采用以下步骤:

在GUI中添加一个axes控件,可以通过GUIDE工具或手写代码实现。

在m文件中使用绘图函数,如plot、imshow等生成图像。

在GUI代码中获取axes句柄,并将图像绘制到该句柄对应的axes中。

具体实现代码如下所示:

在GUI中添加axes控件:

axes_handle = axes('Units','normalized', 'Position',[01, 01, 08, 08]);

在m文件中绘制图像:

% 示例绘制一张随机图像

img = rand(100, 100);

imshow(img);

在GUI代码中将图像绘制到axes中:

% 获取axes句柄

axes_handle = handlesaxes1; % handles为GUI界面句柄结构体

% 在axes中绘制图像

axes(axes_handle);

imshow(img);

这样,m文件中生成的图像就会显示在GUI界面的axes中了。需要注意的是,axes的坐标系与MATLAB中默认的坐标系不同,需要在绘图时根据需要进行转换。

这是漫长的一周,本周完成了Python的进阶模块,主要是pandas、numpy、matplotlib、seaborn、pyecharts这些模块的学习以及一个实际的案例:商品销售情况分析,之前一直觉得课程难度不够,但到这一周难度就大大提高了。尤其是案例练习中的RFM模型和用户生命周期建立,看懂不难但是自己写一直出错,在不断出错不断尝试中知识得到了积累,另外可视化部分没有什么练习题,希望后面可以加上一些这方面的练习,接下来分模块来总结一下学习的内容。

重新设置索引:dfset_index()

Series格式转换为DataFrame:dfto_frame()

文件读取:pdread_csv(filepath, header = 0,skiprows=[1,2]) 

使用位置做索引:dfloc[0]        使用列表做索引:dfloc[[0,1,2]]

使用切片做索引:dfloc[0:4]        使用bool类型索引:df[df['年龄']>30]

loc 是基于索引值的,切片是左闭右闭的

iloc 是基于位置的,切片是左闭右开的

修改列索引:dfrename(columns={'姓名':'name', '年龄':'age'},inplace=True)

替换一个值:dfreplace({'name':{'小明':'xiaoming'}},inplace=True)

对数据进行排序:dfsort_values('age')

累加求和:dfcumsum(0)

删除列:del df['player']         删除行:dfdrop(labels=0) labels 是行列的名字

数据拼接:pdconcat([left,right],axis=1)

# 指定列进行关联,默认是 inner join     result = pdmerge(left,right,on='key')

#多个关联条件:result = pdmerge(left, right, on=['key1', 'key2'])

#左连接:result = pdmerge(left, right, how='left', on=['key1', 'key2'])

# 列名不一样的关联:pdmerge(left,right,left_on = ['key1','key2'],right_on = ['key3','key4'])

#单个分组:groups = dfgroupby('district')

# 作用多个聚合函数:groupsagg([npmean,npsum,npstd])

# 针对具体列聚合 groupsageagg([npmean,npsum,npstd])

# 不同列不同聚合函数 groupsagg({"age":npmean,"novip_buy_times":npsum})

分组后该列值求和显示:groups['vip_buy_times']transform('sum')

通常用于求占比:transform(lambda x: x /sum(x))

# 填充指定值:npfull([3,4],1)

# 起始为10,5为步长,30为结尾取不到:nparange(10, 30, 5)

#随机矩阵:nprandomrandom((2,3))

# 平均划分:nplinspace( 0, 2pi, 100 )

# 类型及转换:vectorastype('float')

# 多维变一维:matrixravel()

# 矩阵的扩展:a = nparange(0, 40, 10)    b = nptile(a, (3, 5))    # 行变成3倍,列变成5倍

# 水平拼接:nphstack((a,b))  竖直拼接:npvstack((a,b))

# 竖直分割:nphsplit(a,3)    #水平分割:npvsplit(a,3)

8 Select the data in rows [3, 4, 8] and in columns ['animal', 'age']

A:dfloc[dfindex[[3,4,8]],['animal','age']]

行采用位置,列采用普通索引,这里利用index函数将位置变化为具体的普通索引,再利用loc函数

19 The 'priority' column contains the values 'yes' and 'no' Replace this column with a column of boolean values: 'yes' should be True and 'no' should be False

A1:df['priority']replace(['yes','no'],[True,False],inplace=True) 用replace函数替换

A2:df['priority'] = df['priority']map({'yes': True, 'no': False}) 用map函数替换

最大最小值的索引:dfidxmax、dfidxmin

找出最大最小的前N个数:nlargest()和nsmallest() 

将原表分组 并设置分段区间 pdcut(df['A'], nparange(0, 101, 10))

resample函数 日期重采样:sresample('M')mean()

TimeGrouper 重组:sgroupby(pdTimeGrouper('4M'))idxmax()

split 分割函数:temp = df['From_To']strsplit('_', expand=True) True为DataFrame

两个DataFrame拼接用join:df = dfjoin(temp)

import matplotlibpyplot as plt

pltrcParams['fontsans-serif']=['SimHei'] #用来正常显示中文标签

pltrcParams['axesunicode_minus']=False #用来正常显示负号

%matplotlib inline 直接显示

折线图:pltplot(x,y,color = 'r')

柱状图:pltbar(x,y)  pltbarh(x,y) 多个bar x设置不同 堆积图 bottom设置不同

散点图:pltscatter(x, y, c=colors, alpha=05, s = area)

直方图:plthist(a,bins= 20) bin代表分隔的最小单位

pltlegend() 显示图例

for a,b in zip(X+W[i],data[i]):

    plttext(a,b,"%0f"% b,ha="center",va= "bottom") 添加数据标签

pltannotate('注释文本',xy=(1, npsin(1)),xytext=(2, 05), fontsize=16,arrowprops=dict(arrowstyle="->")) 添加注释文本

pltxlabel("Group") x轴标题

pltylabel("Num") y轴标题

fig, axes = pltsubplots(nrows=2, ncols=2,facecolor='darkslategray')  绘制多个图形

axes[0,0] axes[0,1] axes[1,0] axes[1,1]

pylabrcParams['figurefigsize'] = (10, 6) # 调整大小

动态展示图表

from pyechartscharts import Bar

from pyecharts import options as opts

pyecharts 绘图的五个步骤:

创建图形对象:bar = Bar()

添加绘图数据:baradd_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])

                         baradd_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])

                         baradd_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])

配置系列参数:对标签、线型等的一些设置

配置全局参数:barset_global_opts(title_opts=optsTitleOpts(title="销售情况"))

渲染:生成本地 HTML 文件 barrender("mychartshtml")  barrender()

notebook 渲染:barrender_notebook()

bar = (Bar()

    add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])

    add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])

    add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])

    set_global_opts(title_opts=optsTitleOpts(title="某商场销售情况"))

)

barrender_notebook()

柱状图:Bar()

条形图:barreversal_axis() #翻转XY轴,将柱状图转换为条形图

折线图:from pyechartscharts import Line  line=Line()

饼图:from pyechartscharts import Page, Pie    Pie() 

转换日期类型:df['order_dt']=pd to_datetime (dforder_dt,format="%Y%m%d")

将日期转换为月为单位:df['month']=dforder_dtvalues astype('datetime64[M]') 所有日期显示为当月第一天

去除日期单元值:order_diff/ nptimedelta64(1,'D')

过滤部分极值:grouped_usersum() query('order_products<100') order_amount

数据透视表:rfm=dfpivot_table( index ='user_id', values =['order_products','order_amount'], aggfunc ={'order_amount':'sum','order_products':'sum'})

map() 方法是pandasseriesmap()方法, 对DF中的元素级别的 *** 作, 可以对df的某列或某多列

applymap(func) 也是DF的属性, 对整个DF所有元素应用func *** 作

purchase_r=pivoted_countsapplymap(lambda x: 1 if x>1 else npNaN if x==0 else 0)

apply(func) 是DF的属性, 对DF中的行数据或列数据应用func *** 作,也可用于Series

apply(lambda x:xcumsum()/xsum())    累计占比

apply(lambda x:x/xsum(),axis=0)     每一列中每行数据占比

下周开始进入数据分析思维的课程,很期待后面的课程以及项目,加油!

我认为所有不先讲清楚plt 和ax 两种画图方式的区别的教程都是耍流氓。一上来就告诉你,pltfigure(), pltplot(), pltshow(),这么画就对了的,都是不负责任的表现!

从官网截个图

再从使用指南 User Guide 借个图。每个部分的名称指南,这样当你想修改一个部位的时候,起码知道关键字啊。

下面就是实战。用调取ax的方式来画个图。不要用plt!!

我喜欢用这个命令来开始画图。哪怕你没有subplot,也可以用这个subplots来创建一个画布。

这个function创建了一个大小为(14,7)的画布,把这个画布赋值给变量fig,同时在这个画布上创建了一个axes,把这个axes赋值给ax。这样,所有未来的figxxx都是对这个画布的 *** 作,所有 axxxx 都是对这个axes的 *** 作。

如果你有两个图,那么ax是一个有两个元素ax[0],ax[1] 的list。ax[0]就对应第一个subplot的ax。

注意,我们这里依然不使用plt!因为我们要在这个axes上画数据,因此就用axplot()来画。画完第一个再call一次,再画第二个。

axplot(A,B)

axplot(B,A)

数据画好了就可以各种细调坐标轴啊,tick啊之类的。

首先把标题和xy坐标轴的标题搞定。Again, 不用plt。直接在axes上进行设定。

然后是xy坐标轴的一些属性设定, 也是在axes level上完成的

最后是坐标轴tick和细节,这个在axesxaxis or axesyaxis上完成。

>

以上就是关于matlab 的m文件绘制的图像怎么在gui界面的axes中显示全部的内容,包括:matlab 的m文件绘制的图像怎么在gui界面的axes中显示、数据蛙-Python进阶、matplotlib 先搞明白plt. /ax./ fig再画等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9504555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存