如何画一个柱状图在瀑布图?

15的观点(30天)
尼科莱
尼科莱 2020年8月21日
编辑: Abdolkarim穆罕默 2020年8月22日
你好,
我想绘制多个瀑布图的直方图。有人知道一种方法吗?
例子:
我不想用一个三维图bar3会给我,我想要酒吧飞机在上面的照片链接。
任何提示或链接会高度赞赏!
谢谢你!
2的评论
尼科莱
尼科莱 2020年8月22日
非常感谢你的回答!

登录置评。

答案(2)

亚当Danz
亚当Danz 2020年8月21日
编辑:亚当Danz 2020年8月21日
酒吧要有宽度值但你可以使价值很小 出现 是平的。
bar3 (Z) ,当 Z 是一个矩阵,将会有一个色组的酒吧Z的每一列和每一组将集中在相同的x值。这个演示展示了如何1)变化之间的空间组织和2)减少每一栏的宽度,所以他们显得平坦。
有关详细信息,请参阅内联注释。
%的内置数据加载和情节一个典型bar3()的阴谋。
负载count.dat
clf ()
h = bar3 (count (1:11,:));
包含(“轴”)
ylabel (“轴”)
zlabel (z轴的)
%为每个组定义所需的x-coordintes酒吧
%(必须有相同数量的元素“h”)
newX = (1、5、9);
%,或者使用
% newX = linspace(1100年,元素个数(h));
%定义栏宽度深度
barWidths = 0.2;
%延长轴的极限
xlim ([min (newX) -barWidths max (newX) + barWidths])
%重新定位每组的酒吧
i = 1:元素个数(h)
currentVals = [min (h(我).XData [],“所有”)、马克斯(h(我).XData [],“所有”));
h(我).XData (h(我)。XData = = currentVals (1)) = newX (i) - (barWidths / 2);
h(我).XData (h(我)。XData = = currentVals (2)) = newX(我)+ (barWidths / 2);
结束
变化百分比x-ticks
ax = h (1) .Parent;
originalLabels = ax.XTickLabel;
斧子。XTick = newX;
斧子。XTickLabel = originalLabels;
你也可以关掉黑边行这将帮助每个栏(隐藏的深度 下图所示 )。
集(h,“EdgeColor”,“没有”)
4评论
亚当Danz
亚当Danz 2020年8月22日
编辑:亚当Danz 2020年8月22日
轴的选择是任意的。我只是改变了轴标签下面和视角。
pdf文件(或不管这些曲线)可以添加使用plot3()而记住x和y轴是交换。下面的曲线是高斯分布的均值和标准计算杆高度。
%的内置数据加载和情节一个典型bar3()的阴谋。
clf ()
rawdata = randn (100 4);
data = arrayfun (@ (i) {histcounts (rawdata(:,我),10)”},1:尺寸(rawdata, 2));
data =圆({}):[数据。* (。5。1 1.25]);
h = bar3(数据、.90);
包含(“轴”)
ylabel (“轴”)
zlabel (z轴的)
视图([15]-145年)
持有
%为每个组定义所需的x-coordintes酒吧
%(必须有相同数量的元素“h”)
newX = linspace(1100年,元素个数(h));
%定义栏宽度深度
barWidths = 0.1;
%延长轴的极限
xlim ([min (newX) -barWidths max (newX) + barWidths])
%定义高斯函数
= @高斯(x,μ,团体,amp) amp * exp (- (((xμ)^ 2)/(2 *团体。^ 2)));
xCurve = linspace(5、大小(数据,1)+。5,100);
%重新定位每组的酒吧
i = 1:元素个数(h)
currentVals = [min (h(我).XData [],“所有”)、马克斯(h(我).XData [],“所有”));
h(我).XData (h(我)。XData = = currentVals (1)) = newX (i) - (barWidths / 2);
h(我).XData (h(我)。XData = = currentVals (2)) = newX(我)+ (barWidths / 2);
%添加bar-fits(假设正常的距离)
(μ,sig) = normfit (repelem(1:尺寸(数据,1),数据(:,i)));
yCurve =高斯(xCurveμ,团体,马克斯(数据(:,我)));
plot3 (repmat (newX (i)、大小(xCurve)), xCurve, yCurve,“k -”,“线宽”3)
结束
变化百分比x-ticks
ax = h (1) .Parent;
originalLabels = ax.XTickLabel;
斧子。XTick = newX;
斧子。XTickLabel = originalLabels;
集(h,“EdgeColor”,(。5。5。5)

登录置评。


Abdolkarim穆罕默
Abdolkarim穆罕默 2020年8月22日
编辑:Abdolkarim穆罕默 2020年8月22日
我认为没有函数画一个命令。但是,它可以使用 补丁() plot3 () 。使用以下代码。你必须有你所有的数据都在一个矩阵。如果有不同数量的每个变量的观察,可以垫短变量 年代。
% %创建数据集
rng (0);
数据= 50 + randn (80 5) - 2 * (1:5);
Data = vertcat(数据,[50岁,50岁,50岁,南南]);
% %画情节
图(“位置”(748、86560545));
%获得数量的变量(列数据)
NumVariables =大小(数据,2);
%的颜色我们循环
颜色= [
0 0.4470 0.7410
0.8500 0.3250 0.0980
0.9290 0.6940 0.1250
0.4940 0.1840 0.5560
0.4660 0.6740 0.1880
0.3010 0.7450 0.9330
0.6350 0.0780 0.1840
];
%定义相对栏宽度
RelativeBarWidth = 0.9;
%顶点的模板
VerticesTemplate = [
0 1 0
1 1 0
1 1 1
0 1 1
];
持有(“上”)
%为每个变量
i1 = 1: NumVariables
% - - - - -酒吧策划- - - - - - - - - - - - -
%去除nan
CurrentData =数据(isfinite(数据(:,i1)), i1);
%计算本计数和本边缘
[BinCounts, BinEdges] = histcounts (CurrentData);
%计算数量的垃圾箱
NumBins =元素个数(BinCounts);
%创建顶点
顶点= 0 (4 * NumBins, 3);
i2 = 1: NumBins
Temp = VerticesTemplate;
临时([1,4],1)= BinEdges (i2) + (1-RelativeBarWidth) * (BinEdges (i2 + 1) -BinEdges (i2));
临时([2、3],1)= BinEdges (i2 + 1) - (1-RelativeBarWidth) * (BinEdges (i2 + 1) -BinEdges (i2));
临时(:,2)= i1;
临时(:,3)= Temp (:, 3) * BinCounts (i2);
顶点((i2-1) * 4 + 1: i2 * 4:) = Temp;
结束
%创建的脸
面临=重塑(1:4 * NumBins, [4, NumBins]) ';
%拉杆图
补丁(“脸”的脸,“顶点”顶点,
“FaceVertexCData”,repmat(颜色(i1,:), [NumBins 1]),
“FaceColor”,“平”,
“EdgeColor”,0.6,0.6,0.6);
% - - - - - - - - - - - - - - - - - -正常分布
%定义的准确性
NumPoints = 101;
%计算统计数据
VarMin = min (CurrentData);
VarMax = max (CurrentData);
VarMean =意味着(CurrentData);
VarStd =性病(CurrentData, 1);
%建立x和计算z线
% LineX = linspace (VarMin、VarMax NumPoints) ';%短,non-adjustable尾巴
LineX = linspace (VarMean - 3.5 * VarStd VarMean + 3.5 * VarStd NumPoints) ';%,可调节的反面
细的= repmat (i1, [NumPoints 1]);
LineZ = pdf (“正常”,VarMean LineX VarStd) * (BinCounts, 2)总和;
%的底线
LineZ plot3 (LineX细的,
“颜色”,“k”,
“线宽”2);
结束
持有(“关闭”)
% %调整轴
视图([-35年33]);
包含(“本中心”);
yticklabels ([“美国人”,“四”,“亚洲”,“非洲”,“大洋洲”]);
zlabel (“计数”);
框(“上”);
网格(“上”);
甘氨胆酸ax =;
斧子。投影=“视角”;
6个评论

登录置评。

类别

找到更多的在随机数生成帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!