如果我在Matlab中使用以下文件,我怎样才能使y轴成为对数刻度?我尝试了不同的方法,但它没有用。
x = [0.5 0.6 0.9 1 1.2]; % start of bar
y = zeros(length(x),1);
dx = diff([x 1.8]); % width of bar
dy = [1 3 2 .5 .1];
figure, hold on
for ii=1:length(x)
rectangle('position',[x(ii) y(ii) dx(ii) dy(ii)])
end
axis([0.5 2 0 4.1])
ylabel('Prob density')
xlabel('Time')
答案 0 :(得分:0)
使用半语功能。请参阅此处的文档:http://www.mathworks.com/help/matlab/ref/semilogy.html
答案 1 :(得分:0)
一种方法是在创建图形后或在完成绘图后更改'YScale'
属性,例如:
...
set(gca,'YScale','log');
这也会改变你的y轴标签,使这个特殊的情节看起来很奇怪。您可以通过在调用rectangle
:
...
rectangle('position',[x(ii) exp(y(ii)) dx(ii) dy(ii)]);
当然,在for
循环之外执行此操作会更有效。尝试使用bar
也可能更好。
请注意,这样的情节永远不会完全合理,因为您的条形图从零开始(y
)而log10(0)
是-Inf
。因此,对数刻度图从10^0 = exp(0) = 1
开始。