添加传奇绘制彩色colormap函数
252(30天)
显示旧的评论
我用现在的情节点的颜色是由一个代码(1 - 3)3列的矩阵。我似乎无法找出如何让matlab为这个而不是colorbar一个传奇。因为他们正在策划一个自动传奇函数只包含一个点。目前我刚在illustrator中添加一个传奇,但这有点费时的图,我宁愿在matlab完成。有可能要么从头做一个传奇和指定每个条目和标签或matlab自动去做吗?谢谢!
我用的代码和图如下:
x = [HL_conpor HL_perm HL_class];
颜色= (0.8 - 0.8 0;
1 0.5 0
1 0 0
];
%
散射(x (: 1) x (:, 2), [], x (:, 3),
“填充”
)
集(gca),
“YScale”
,
“日志”
)
包含(
“连接孔隙度(\ phi_c)”
);
ylabel (
“渗透(m ^ 2)”
);
colormap(颜色)
legend_labels = {
“VDP1”
,
“VDP2”
,
“VDP3”
};
传奇(legend_labels
“位置”
,
“最佳”
);
0评论
接受的答案
戴夫B
2021年8月12日
编辑:戴夫B
2021年8月12日
当你为散射指定CData(颜色输入),MATLAB使用colormapping情节数据和colorbar描述的映射。散射是CData的思维是连续的,但你认为颜色是离散的。
通常有两种方法来解决这个问题…
问题情况和假数据
x = randn (100 1);
y = randn (100 1);
c =兰迪(3100 1);
tiledlayout (2, 2)
nexttile;
散射(x, y, 30日,c,“f”)
colormap ([1 0 0;0 1 0;0 0 1])
colorbar (“滴答”(4/3 2 8/3),“TickLabels”,(“红”“绿”“蓝”])
标题(“问题版本”)
解决方案1
:使用等等,使分离散射物体,并使用colororder定义颜色(也可以显式地指定颜色在每个散射,只要有一个颜色每个散射):
nexttile (3)
持有在
散射(x (c = = 1), y (c = = 1), 30岁,“填充”)
散射(x (c = = 2), y (c = = 2), 30岁,“填充”)
散射(x (c = = 3), y (c = = 3), 30岁,“填充”)
colororder ([1 0 0 0 1 0;0 0 1])
传奇([“红”“绿”“蓝”])
标题(“3散射”,“(colororder代替colormap)”)
解决方案2
:创建一些隐藏的散射,将他们的传说:
nexttile (4)
散射(x, y, 30日,c,“f”)
持有在
h = gobject (3,1);
h(1) =散射(南、南“r”,“填充”);
h(2) =散射(南、南‘g’,“填充”);
h(3) =散射(南、南“b”,“填充”);
传奇(h, [“红”“绿”“蓝”])
标题(“3隐藏散射”)
colororder更多信息,请参阅
这个文档页面
答案(1)
斯科特·麦肯齐
2021年8月12日
一个方法是做三散射,一个用于每个值在第三列数据。这是一般的想法使用修改后的版本的代码:
1)x =[兰德(25日兰德(25日1)兰迪(1)3、25日];
颜色= (0.8 - 0.8 0;1 0.5 0;1 0 1];
c1 = x (:, 3) = = 1;
c2 = x (:, 3) = = 2;
c3 = x (:, 3) = = 3;
散射(x (c1, 1), x (c1、2), 100年,“填充”);
持有在;
散射(x (c2, 1), x (c2, 2), 100年,“填充”);
散射(x (c3, 1), x (c3, 2), 100年,“填充”);
集(gca),“YScale”,“日志”)
包含(“连接孔隙度(\ phi_c)”);
ylabel (“渗透(m ^ 2)”);
colormap(颜色)
legend_labels = {“VDP1”,“VDP2”,“VDP3”};
传奇(legend_labels“位置”,“最佳”);