Matlab Semilogx绘图问题:调整X轴刻度与网格匹配目标图
解决Matlab semilogx图轴刻度与网格样式问题
以下是修改后的代码,可实现目标图的刻度样式、网格效果,同时可视化X截距:
Exposure = [53.19, 79.79, 132.98, 212.77, 455.93]; Cure_depth = [10.88, 14.56, 19.19, 23.45, 30.36]; % 绘制原始数据点与连线 semilogx(Exposure,Cure_depth, '-*', 'LineWidth',1.5, 'MarkerSize',8) hold on % 拟合直线并计算X截距(y=0时的x值) p = polyfit(log10(Exposure), Cure_depth, 1); % 半对数图需对x取log10后做线性拟合 x_intercept_log = -p(2)/p(1); % 求解y=0时的log10(x)值 x_intercept = 10^x_intercept_log; % 转换回原始x轴数值 % 绘制延长至y=0的拟合线,方便查看截距 x_fit = logspace(x_intercept_log, 3, 100); % 生成从截距到10^3的连续x点 y_fit = polyval(p, log10(x_fit)); semilogx(x_fit, y_fit, '--r', 'LineWidth',1) % 设置X轴刻度为10^0、10^1等格式 xticks([10^0, 10^1, 10^2, 10^3]) xticklabels({'$10^0$', '$10^1$', '$10^2$', '$10^3$'}) set(gca, 'TickLabelInterpreter', 'latex') % 启用LaTeX渲染上标 % 调整网格样式:主网格对齐大刻度,次网格对齐小刻度 grid on grid minor set(gca, 'GridLineStyle', '-', 'MinorGridLineStyle', ':') % 标注X截距 text(x_intercept, 0, sprintf('X截距: %.2f', x_intercept), ... 'HorizontalAlignment', 'right', 'VerticalAlignment', 'top') % 可选:添加坐标轴标签与标题 xlabel('Exposure') ylabel('Cure Depth') title('Cure Depth vs Exposure') hold off
关键修改说明
- X轴刻度:通过
xticks指定刻度位置,配合xticklabels与LaTeX解释器生成上标格式的刻度文字,完全匹配目标图样式。 - 网格优化:开启
grid minor显示次网格,同时设置主/次网格的不同线型,让网格对齐对数刻度的层级。 - X截距可视化:利用线性拟合计算y=0对应的x值,绘制延长的拟合线并标注数值,直观展示截距位置。
内容的提问来源于stack exchange,提问作者Magic Dave
相关产品推荐
相关产品推荐

