Cannot set axes properties
4 次查看(过去 30 天)
显示 更早的评论
I am trying to set axes properties.
clc;
length = 10;
k = linspace(1, length, length);
m = 100;
p = 0.95;
temp1 = - (k.^(-1));
temp2 = log(1-p);
temp3 = temp2.*temp1;
temp4 = exp(temp3);
y = (1+temp4).*(0.5*m);
err = (temp4-1).*(0.5*m);
pointEstimator = (1+(k.^(-1))).*m;
width = 12;
height = 10;
AxesLineWidth = 0.75;
FotSize = 8;
LineWidth = 1.5;
MarkerSize = 6;
pos = get(gcf, 'Position');
set(gcf, 'Position', [pos(1) pos(2) width*100 height*100]);
errorbar(k, y, err,'LineWidth',LineWidth,'LineStyle','none','Color',[153,142,195]/255); hold on;
plot(k, pointEstimator,'o','MarkerEdgeColor',[241,163,64]/255,'MarkerFaceColor',[241,163,64]/255,'MarkerSize',MarkerSize); hold on;
set(gca, 'LineWidth',AxesLineWidth,'FontSize',15,'TickLabelInterpreter','latex');
xlim([0 length+0.5]);
max = 1 / (1-p) * m;
ymax = max * 1.05;
ylim([0 ymax]);
xlabel('$$ k $$','Interpreter','latex','FontSize',15);
ylabel('Estimated $$ N $$','Interpreter','latex','FontSize',15);
yticks([m 5*m 10*m 15*m 20*m 25*m]);
yticklabels({'$$m$$', '$$5m$$', '$$10m$$', '$$15m$$', '$$20m$$', '$$25m$$'});
grid on;
grid minor;
legend('95% Confidence Intervals','Point Estimators');
However, an error occurs.
Error using set
Conversion to double from struct is not possible.
Error in plot1 (line 32)
set(gca, 'LineWidth',AxesLineWidth,'FontSize',15,'TickLabelInterpreter','latex');
Any help or suggestions will be appreciated!
2 个评论
Star Strider
2018-4-30
Your code runs for me without error in R2018a.
Also, length is a core MATLAB function you may want to use later, so rename it to something else. (Naming a variable the same as a MATLAB function is known as ‘overshadowing’, and is best avoided.) I chose to rename it ‘len’:
len = 10;
k = linspace(1, len, len);
...
xlim([0 len+0.5]);
dpb
2018-4-30
Not same code as created the error; this was in some function plot1 by the error message text.
The above code works fine.
Looks like you've somehow during debugging/testing gotten a dot (period) and subsequent field name added to the AxesLineWidth variable in the actual code that silently turned it into a struct. Do a
clear Axes*
and try again...or if you don't have much data in the workspace that would be difficult to recreate, just
clear
to start over from clean slate.
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Performance 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!