matlab绘制三维柱状图(hist3,bar3)
N = 1e3; % number of points
rng(7)
signalIn = rand(N, 2)*30;
signalIn(1:10,:) = 5.5; % 密集
signalIn(51:70,:) = 15.5; % 密集
[xy_count, xy_cent]=getDist2D(signalIn,2);
[xy_count, xy_cent]=getDist2D(signalIn,2);%% 三维柱状图
close all
[x15,y15]=size(xy_count);
X15=1:x15;
Y15=1:y15;
figure
% mesh( xy_cent{1}, xy_cent{2},xy_count);
% mesh(Y15,X15,(xy_count));
% imagesc(xy_count)
% % bar3( xy_cent{1}', xy_cent{2}',xy_count);
thisFig=bar3(xy_count);
% ----根据柱子高度设置颜色----
if 0% https://blog.csdn.net/weixin_40398103/article/details/89380310for k = 1:length(thisFig)zdata = thisFig(k).ZData;%zdata=ones(size(zdata))*0.2; % all use the same colorthisFig(k).CData = zdata;thisFig(k).FaceColor = 'interp'; % 渐变色% thisFig(k).FaceColor = 'r';% thisFig(k).FaceColor = [0.30 0.75 0.93];% thisFig(k).FaceColor = [0.62 0.91 0.97];% thisFig(k).FaceColor = [.75,.85,.95]; % Plot the bars in a light steel blue.in hist3end% set(gcf,'renderer','opengl');% set(get(gca,'child'),'FaceColor','interp','CDataMode','auto');
end
% h.XTickLabel =xy_cent{1}; % 直接用会有问题
% h.YTickLabel =(101:1:124);
% set(gca,'xticklabel',{'a','b','c','d','e'});
% set(gca, 'FontSize',12','XTick', (101:106));
% 1、xticklabel:xticklabel是刻度标签。
% 2、xtick:xtick是坐标轴刻度。
% ----改变刻度显示值----
h = gca;
if 1% https://www.cnblogs.com/fengsf/p/14643905.html% https://ww2.mathworks.cn/help/matlab/creating_plots/color-3-d-bars-by-height-1.html?searchHighlight=bar3&s_tid=srchtitle%x的坐标xt=get(gca,'XTick');if min(xt)==0a=1;elsea=xt(1);endif max(xt)>length(xy_cent{1})b=length(xy_cent{1});elseb=xt(end);endnewXIdx=[a xt(2:end-1) b];newXTickLabel=xy_cent{1}(newXIdx);h.XTickLabel=newXTickLabel;% y的坐标yt=get(gca,'YTick'); % 首0改1,末超用endnewYIdx=[1 yt(2:end-1) length(xy_cent{2})];newYTickLabel=xy_cent{2}(newYIdx);h.YTickLabel=newYTickLabel;
end
colorbar
title('分布')
xlabel('x')
ylabel('y')
zlabel('z')
以上是主函数。
2022.12.4 补充getDist2D函数:
function [xy_count, xy_cent]=getDist2D(xy,type,x_range,y_range)if ~(isreal(xy))xy=[real(xy) imag(xy)];
end
N=size(xy,1);
K1 = 64/2; % number of intervals along x
K2 = 64/2;
% int_x = [min(xy(:,1)) :1/K1: max(xy(:,1))+1/K1];
% int_y = [min(xy(:,2)) :1/K2: max(xy(:,2))+1/K2];
int_x=linspace(min(xy(:,1)) , max(xy(:,1))+1/K1, K1);
int_y=linspace(min(xy(:,2)) , max(xy(:,2))+1/K2, K2);if nargin > 2int_x = x_range;int_y = y_range;
end
% K1=length(int_x)-1;
% K2=length(int_y)-1;
K1=length(int_x);
K2=length(int_y);
switch typecase 1%% hist3[count_cells_hist,xy_cent] = hist3(xy, 'Edges', {int_x int_y});% 注意hist3得到的矩阵是K1+1*K2+1的, 所以把最后一行和一列去掉.% 最后一行或一列表示的是 X(k,1)= edges{1}(end)或者X(k,2) = edges{2}(end)的点数xy_count=count_cells_hist;case 2%% histcounts2[xy_count,Xedges,Yedges] = histcounts2(xy(:,1),xy(:,2),int_x,int_y);% [N,Xedges,Yedges] = histcounts2(x,y,6,'Normalization','probability')% [N,Xedges,Yedges] = histcounts2(x,y,6,'Normalization','pdf')% all(count_cells_hist(:) == xy_count(:))xy_cent{1}=Xedges;xy_cent{2}=Yedges;xy_cent{1}(end) = [];xy_cent{2}(end) = [];
end
源数据无了,使用rng(7)生成随机数据,绘制的分布图如下
matlab绘制三维柱状图(hist3,bar3)相关推荐
- matlab rgb三维直方图,MATLAB小技巧之十:利用MATLAB绘制三维彩色柱状图[转载]
MATLAB自带有绘制三维柱状图的函数bar3,有版友反映不好控制柱子的颜色,特别是bar3不能绘制渐变色的柱子,并且bar3不能根据用户指定的散点数据绘制柱状图.为此,我编写了一个函数(scatte ...
- matlab绘制三维图形
原文地址:matlab绘制三维图形 作者:hotinko1 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,-,xn ...
- matlab用fill三维,使用matlab绘制三维图形的方法
使用matlab绘制三维图形的方法 使用matlab绘制三维图形的方法 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项 ...
- Matlab 绘制三维立体图(以地质异常体为例)
Matlab 绘制三维立体图(以地质异常体为例) 参考文章: (1)Matlab 绘制三维立体图(以地质异常体为例) (2)https://www.cnblogs.com/yangwenbo214/p ...
- matlab柱状图加阴影,matlab 绘制 阴影 柱状图 条形图
matlab 绘制 阴影 柱状图 条形图 matlab 绘制 阴影 柱状图 条形图 matlab 绘制 阴影 黑白 柱状图 条形图 冰三点水 在科技文献写作等过程中,我们往往需要粘贴柱状图或者条形图, ...
- 用matlab绘制P三曲线,知道曲线方程 怎么用matlab绘制三维图 一定要给出程序 , matlab怎样画三维曲线...
导航:网站首页 > 知道曲线方程 怎么用matlab绘制三维图 一定要给出程序 , matlab怎样画三维曲线 知道曲线方程 怎么用matlab绘制三维图 一定要给出程序 , matlab怎样画 ...
- matlab绘制三维立体图
我原以为理解并且会应用matlab绘制三维图,但动起手来,我发现各种不会,弄着弄着都有点怀疑人生了.首先,plot与plot3分别绘制二维与三维的曲线,而不是曲面,这是我的一个误区!还有,当你有x,y ...
- 数学建模更新13(MATLAB绘制三维图【上】)
MATLAB绘制三维图 一.mesh函数以及拓展函数 1.mesh(X,Y,Z)的用法 [1]X是n维向量,Y是m维向量,Z是m*n维的矩阵 [2]X.Y和Z都是m*n维的矩阵 2.mesh(Z)的用 ...
- matlab dlnode,Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
最新文章
- MFC程序在控制台输出的实现
- 【线性表4】线性表的链式实现:静态表
- Android DatePicker, TimePicker控件的使用
- .NET Core UI框架Avalonia
- java-JSON: Expected value at 1:0 错误
- C++primer 第 3 章 字符串、向量和数组 3 . 5 数组
- 坯子库曲面推拉教程_一招曲面流动,搞定99%异形建模
- JSP和Servlet
- 离散数学经典教材及资料(整理)
- 超分辨重建-Bicubic双三次线性插值opencv实现
- 配置keepalived实现Nginx高可用(单主、双主模式)
- word中删除分节符时页面格式会发生改变
- ORA-00980: 同义词转换不再有效
- 国外android大神博客,Android手机浏览器(国外篇)横向对比评测
- 讯飞离线语音合成(离线资源包)
- man手册中文版设置
- windows下的WSL开发环境配置以及相关工具、插件
- 京瓷2010复印a4内容不全_京瓷1800打印机打印时设置了A4为什么打印不了复印正常...
- OpenHarmony轻量系统开发【11】移植MQTT
- 2021-2027全球与中国便携式X射线荧光光谱仪市场现状及未来发展趋势