自定义颜色的饼图部分

136(30天)
迪玛
迪玛 2012年1月8日
编辑: 沃尔特·罗伯森 2020年8月27日
你好!
我想知道是否有可能创建一个饼图以这样一种方式,有6个同样大小的部分——每个颜色在一个特定的绿色或红色的不同输入比例10% - 100%被最亮的红色或绿色,非常苍白的绿色或红色。谢谢!迪玛

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2012年1月11日
有必要摆脱“clc”让它工作。
注:“馅饼”的行业去逆时针图表。
%程序应用红色和绿色有色颜色派段
%根据扇形段的大小。
函数test1 ()
字形大小= 24;
X = [0 0.5 -0.2 0.3 0.8 -0.7];
无花果=图;
ax =轴(“父”图);
numberOfSegments =长度(X);
rgbmatrix = (1 + (X (:) < 0)。* X (:), 1 - (X (:) > 0) * X (:), 1-abs (X (:)));
hPieComponentHandles =派(ax, (1, numberOfSegments));
标题(“饼图和自定义颜色”,“父”ax,“字形大小”、字形大小);
%全屏放大图。
集(图,“单位”,“归一化”,“outerposition”,(0 0 1 1));
集(图,“名字”,“演示ImageAnalyst & Tanuki”,“numbertitle”,“关闭”)
%分配自定义颜色。
k = 1: numberOfSegments
%为这个部门创建一个颜色的蛋糕
:pieColorMap = rgbmatrix (k);%这部分的颜色。
%应用颜色我们只是生成饼图。
集(hPieComponentHandles (k * 2 - 1),“FaceColor”,pieColorMap);
集(hPieComponentHandles (k * 2),“字符串”num2str (X (k)),“字形大小”、字形大小);
结束
7评论
马修
马修 2020年8月27日
非常感谢你对于这个示例,经验!

登录置评。

更多的答案(6)

沃尔特·罗伯森
沃尔特·罗伯森 2012年1月8日
不使用派()。你可以自己补丁()这个在一起。你可能想要开始与圆例程中所示 常见问题解答
1评论
迪玛
迪玛 2012年1月9日
由于....你认为你能给我一个例子吗?
谢谢!)

登录置评。


图像分析
图像分析 2012年1月10日
迪玛:试试这个:
%创建示例数据和阴谋。
X = [1 1 1 1 1 1];
numberOfSegments =长度(X)
hPieComponentHandles =派(X);
%创建自定义colormap: 0 =纯红色,1 =白色。
斜坡= [0:1 / (numberOfSegments-1): 1)”
pieColorMap = [(numberOfSegments, 1),坡道,坡道)
%注意:使用flipud (pieColorMap)如果你想要它
%的其他方式:0 =白,1 =纯红色。
% pieColorMap = flipud (pieColorMap);
%应用颜色我们只是生成饼图。
SetPieChartColors (hPieComponentHandles pieColorMap);
标题(“饼图和自定义颜色”,“字形大小”、字形大小);
5个评论
迪玛
迪玛 2012年1月10日
你认为上面的代码能够生成一个同样颜色的馅饼?再次感谢!)

登录置评。


图像分析
图像分析 2012年1月8日
迪玛:
试试这个演示。test1保存它。米,然后运行它。我认为它会做什么你要求(希望这是你想要的)。
%程序应用红色着色颜色派段
%根据扇形段的大小。
函数test1 ()
试一试
clc;%清除命令窗口。
工作空间;%确定工作区面板显示。
字形大小= 24;
X = (1 2 3 4 5 6);
hPieComponentHandles =派(X);
标题(“饼图和自定义颜色”,“字形大小”、字形大小);
%全屏放大图。
集(gcf,“单位”,“归一化”,“outerposition”,(0 0 1 1));
集(gcf,“名字”,“由ImageAnalyst演示”,“numbertitle”,“关闭”)
%询问用户是否希望应用自定义颜色。
promptMessage = sprintf (这是最初的颜色。\ nDo你想应用自定义颜色,\也取消退出程序?”);
按钮= questdlg (promptMessage,“继续”,“继续”,“取消”,“继续”);
如果比较字符串(按钮,“取消”)
返回;
结束
%分配自定义颜色。
numberOfSegments =长度(X)
k = 1: numberOfSegments
%为这个部门创建一个颜色的蛋糕
fractionOfPie = X (k) / (X)和
thisColor = [1 1-fractionOfPie 1-fractionOfPie]%显示在命令窗口。
:pieColorMap (k) = thisColor;%这部分的颜色。
%应用颜色我们只是生成饼图。
SetPieChartColors (hPieComponentHandles pieColorMap);
如果k < numberOfSegments
promptMessage = sprintf (的新颜色适用于部门% d \ nContinue或取消?”、k);
按钮= questdlg (promptMessage,“继续”,“继续”,“取消”,“继续”);
如果比较字符串(按钮,“取消”)
打破;
结束
结束
结束
errorMessage = sprintf (test1的误差函数。\ n \ nError信息:\ n % s’,ME.message);
流(1,“% s \ n”,errorMessage);
uiwait (warndlg (errorMessage));
结束
返回;从test1 %
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%如果你应用colormap, MATLAB具有“特性”应用
% colormap上的所有轴图,不仅当前轴。因此,如果
%你施加一个colormap当前轴(饼图)思考
%将只影响你的饼图,你会惊讶地发现它影响
%所有其他图表和图片对话框。为了解决,使用
%这个函数派部分的颜色和不影响
%的任何其他对象对话框。你需要通过
% hPieComponentHandles你得到当你创建饼图:
% hPieComponentHandles =派([Value1, Value2, Value3]{“标签1”,标签2,'标签3 '});
%然后弥补你的彩色地图是这样的:
% pieColorMap (: 1) = (。22点29];%颜色段1。
% pieColorMap (2) = (。25。55 .79];%颜色段2。
% pieColorMap (3) = (。93 .11 .14点);%颜色段3。
%,最后,调用这个函数
% SetPieChartColors (hPieComponentHandles pieColorMap);
函数SetPieChartColors (hPieComponentHandles PieSegmentColors)
试一试
numberOfSegments = min([长度尺寸(PieSegmentColors, 1) (hPieComponentHandles)))
s = 1: numberOfSegments
集(hPieComponentHandles ((s - 1) * 2 + 1),“FaceColor”PieSegmentColors(年代,:));
结束
errorMessage = sprintf (“SetPieChartColors误差函数。\ n \ nError信息:\ n % s’,ME.message);
流(1,“% s \ n”,errorMessage);
uiwait (warndlg (errorMessage));
结束
返回;从SetPieChartColors %
17日评论
图像分析
图像分析 2012年1月9日
如果公式到达颜色适合你,然后做k前循环的循环,你可以做的
pieColorMap (k) = rgbmatrix (k,:);%这部分的颜色。
和摆脱thisColor计算。见鬼,你甚至不需要k循环——这只是教程的目的。你可以指定颜色都在一个没有任何循环/ k:
SetPieChartColors (hPieComponentHandles rgbmatrix);

登录置评。


迪玛
迪玛 2012年1月10日
你好沃尔特和图像分析,
我做了以下修改代码和它目前没有要求用户输入。但是颜色所有的部分在一个明亮的红色。我需要彩色的每一部分具体的基于向量的绿色或红色
[0 0.5 -0.2 0.3 0.8 -0.7]
-值描述这个地方在没有颜色鲜红的频谱和积极的价值观描述在.....没有色彩明亮的绿色颜色这个函数,
rgbmatrix = [(X (:) > 0) * X(:), 0(长度(X), 1), (X (:) < 0)。* X (:));
这什么?
更新后的代码:
%程序应用红色着色颜色派段
%根据扇形段的大小。
函数test1 ()
clc;%清除命令窗口。
工作空间;%确定工作区面板显示。
字形大小= 24;
X = [1 1 1 1 1 1];
hPieComponentHandles =派(X);
rgbmatrix = [(X (:) > 0) * X(:), 0(长度(X), 1), (X (:) < 0)。* X (:));
标题(“饼图和自定义颜色”,“字形大小”、字形大小);
%全屏放大图。
集(gcf,“单位”,“归一化”,“outerposition”,(0 0 1 1));
集(gcf,“名字”,“由ImageAnalyst演示”,“numbertitle”,“关闭”)
%分配自定义颜色。
numberOfSegments =长度(X)
k = 1: numberOfSegments
%为这个部门创建一个颜色的蛋糕
fractionOfPie =总和(X (1: k)) / (X)和
thisColor = [1 1-fractionOfPie 1-fractionOfPie]%显示在命令窗口。
pieColorMap (k) = rgbmatrix (k,:);%这部分的颜色。
%应用颜色我们只是生成饼图。
SetPieChartColors (hPieComponentHandles pieColorMap);
结束
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%如果你应用colormap, MATLAB具有“特性”应用
% colormap上的所有轴图,不仅当前轴。因此,如果
%你施加一个colormap当前轴(饼图)思考
%将只影响你的饼图,你会惊讶地发现它影响
%所有其他图表和图片对话框。为了解决,使用
%这个函数派部分的颜色和不影响
%的任何其他对象对话框。你需要通过
% hPieComponentHandles你得到当你创建饼图:
% hPieComponentHandles =派([Value1, Value2, Value3]{“标签1”,标签2,'标签3 '});
%然后弥补你的彩色地图是这样的:
% pieColorMap (: 1) = (。22点29];%颜色段1。
% pieColorMap (2) = (。25。55 .79];%颜色段2。
% pieColorMap (3) = (。93 .11 .14点);%颜色段3。
%,最后,调用这个函数
% SetPieChartColors (hPieComponentHandles pieColorMap);
函数SetPieChartColors (hPieComponentHandles PieSegmentColors)
试一试
numberOfSegments = min([长度尺寸(PieSegmentColors, 1) (hPieComponentHandles)))
s = 1: numberOfSegments
集(hPieComponentHandles ((s - 1) * 2 + 1),“FaceColor”PieSegmentColors(年代,:));
结束
errorMessage = sprintf (“SetPieChartColors误差函数。\ n \ nError信息:\ n % s’,ME.message);
流(1,“% s \ n”,errorMessage);
uiwait (warndlg (errorMessage));
结束
返回;从SetPieChartColors %
谢谢你的帮助!)))

迪玛
迪玛 2012年1月10日
我和rgbmatrix取代pieColorMap,还是颜色都在一个鲜亮的红色:
%程序应用红色着色颜色派段
%根据扇形段的大小。
函数test1 ()
clc;%清除命令窗口。
工作空间;%确定工作区面板显示。
字形大小= 24;
X = [1 1 1 1 1 1];
hPieComponentHandles =派(X);
rgbmatrix = [(X (:) > 0) * X(:), 0(长度(X), 1), (X (:) < 0)。* X (:));
标题(“饼图和自定义颜色”,“字形大小”、字形大小);
%全屏放大图。
集(gcf,“单位”,“归一化”,“outerposition”,(0 0 1 1));
集(gcf,“名字”,“由ImageAnalyst演示”,“numbertitle”,“关闭”)
%分配自定义颜色。
numberOfSegments =长度(X)
k = 1: numberOfSegments
%为这个部门创建一个颜色的蛋糕
fractionOfPie =总和(X (1: k)) / (X)和
thisColor = [1 1-fractionOfPie 1-fractionOfPie]%显示在命令窗口。
pieColorMap (k) = rgbmatrix (k,:);%这部分的颜色。
%应用颜色我们只是生成饼图。
SetPieChartColors (hPieComponentHandles pieColorMap);
结束
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%如果你应用colormap, MATLAB具有“特性”应用
% colormap上的所有轴图,不仅当前轴。因此,如果
%你施加一个colormap当前轴(饼图)思考
%将只影响你的饼图,你会惊讶地发现它影响
%所有其他图表和图片对话框。为了解决,使用
%这个函数派部分的颜色和不影响
%的任何其他对象对话框。你需要通过
% hPieComponentHandles你得到当你创建饼图:
% hPieComponentHandles =派([Value1, Value2, Value3]{“标签1”,标签2,'标签3 '});
%然后弥补你的彩色地图是这样的:
% pieColorMap (: 1) = (。22点29];%颜色段1。
% pieColorMap (2) = (。25。55 .79];%颜色段2。
% pieColorMap (3) = (。93 .11 .14点);%颜色段3。
%,最后,调用这个函数
% SetPieChartColors (hPieComponentHandles pieColorMap);
函数SetPieChartColors (hPieComponentHandles rgbmatrix)
试一试
numberOfSegments = min([长度尺寸(rgbmatrix, 1) (hPieComponentHandles)))
s = 1: numberOfSegments
集(hPieComponentHandles ((s - 1) * 2 + 1),“FaceColor”rgbmatrix(年代,:));
结束
errorMessage = sprintf (“SetPieChartColors误差函数。\ n \ nError信息:\ n % s’,ME.message);
流(1,“% s \ n”,errorMessage);
uiwait (warndlg (errorMessage));
结束
返回;从SetPieChartColors %
1评论
图像分析
图像分析 2012年1月10日
看到新的(更短的答案)。

登录置评。


迪玛
迪玛 2012年1月11日
你好!)
我想知道下面的代码以这样一种方式可以修改颜色的每个部分在每个特定的绿色或红色基于他的向量[0 0.5 -0.2 - 0.3 0.8 - -0.7):
%创建示例数据和阴谋。
X = [1 1 1 1 1 1];
numberOfSegments =长度(X)
hPieComponentHandles =派(X);
%创建自定义colormap: 0 =纯红色,1 =白色。
斜坡= [0:1 / (numberOfSegments-1): 1)”
pieColorMap = [(numberOfSegments, 1),坡道,坡道)
%注意:使用flipud (pieColorMap)如果你想要它
%的其他方式:0 =白,1 =纯红色。
% pieColorMap = flipud (pieColorMap);
%应用颜色我们只是生成饼图。
SetPieChartColors (hPieComponentHandles pieColorMap);
标题(“饼图和自定义颜色”,“字形大小”、字形大小);
你能帮我完成这个项目吗?
非常感谢!)
1评论
迪玛
迪玛 2012年1月11日
是的,下面的图片显示了近似版本的馅饼是用这个代码:
http://imageshack.us/content_round.php?page=done&l=img36/707/pieh.png&via=mupload&newlp=1

登录置评。

标签

社区寻宝

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

开始狩猎!