如何使用Excel文件中的文本数据列作为x轴进行打印?

如何使用Excel文件中的文本数据列作为x轴进行打印?,excel,matlab,text,plot,Excel,Matlab,Text,Plot,我在Matlab中导入了一个Excel文件,其中包含两列,一列带有数值,另一列带有文本值。前5行如下所示: ABF-E 0.34 HJK-D-0.54 GHKL-I 1.34 FPLO-52.3 KKJLL-t0.98 我需要在Y轴上绘制数字列,在X轴上绘制文本列。我可以使用xlsread和plot轻松处理数字列,但我无法管理打印文本列。我怎么能做到 我已经编写了以下代码,但我不知道如何处理x轴: filename = 'MyData.xlsx'; Sheet = 2 xlRange = '

我在Matlab中导入了一个Excel文件,其中包含两列,一列带有数值,另一列带有文本值。前5行如下所示:

ABF-E 0.34

HJK-D-0.54

GHKL-I 1.34

FPLO-52.3

KKJLL-t0.98

我需要在Y轴上绘制数字列,在X轴上绘制文本列。我可以使用
xlsread
plot
轻松处理数字列,但我无法管理打印文本列。我怎么能做到

我已经编写了以下代码,但我不知道如何处理x轴:

filename = 'MyData.xlsx';

Sheet = 2

xlRange = 'B1:B60';

Yaxis = xlsread (filename,Sheet,xlRange);

Xaxis = ????????;

plot(xAxis,Yaxis)
如果有人能帮助我,我将不胜感激。

用您的
xAxis
文本设置轴的位置。您可以按照以下方式操作:

[~,xAxis] = xlsread(filename,Sheet,'A1:A60'); %// read in text data. Use second output 
yAxis = xlsread(filename,Sheet,'B1:B60'); %// read in numeric data
plot(yAxis) %// This uses 1, 2, 3... as x axis values
set(gca,'xtick',1:numel(xAxis)) %// set ticks
set(gca,'xticklabel',xAxis)  %// set ticklabels with your xAxis
xlim([0 numel(xAxis)+1]) %// adjust x axis span
在您的示例中,这将产生:

如果要跳过x轴上的一些标签以减少其混乱:定义所需的
勾选步骤
,然后在设置勾选和勾选标签时使用它(在两行
设置
中):


在这里,我发布了回答我所有问题的代码。我已经为图表的前5行粘贴了代码。我用于旋转x轴标签的功能可在此处下载:


您好,路易斯,非常感谢您的回答,我将尝试一下,一旦我这样做,我会尽快回复您。@Sarah注意,如果您有60个值要打印,x轴上的名称可能会被压缩。在这种情况下,您可能想跳过一些值是的,您是对的,它看起来非常聚集,但我不能减少值的数量,因为这会降低图形的准确性。有没有办法跳过标签而不是值?我的意思是,例如,在垂直位置内每隔6个值绘制一个标签,以便它们占用更少的空间?。我一直在读到可以使用Xticklabel_rotate,但我必须执行for循环,以每6个值?绘制一个标签?。我的Matlab知识目前还很低。@Sarah您可以跳过一些标签而不减少值的数量;请参见更新答案末尾的内容(无
了解所需的
循环)。至于垂直位置,我真的不知道,我从来没有这样做过你好,路易斯,我试过你的代码,它工作得非常好。我仍在将标签旋转到垂直位置,一旦我找到了方向,我将在这里发布代码。有件事让我有点困惑。在您的代码中,您要求在plot(yAxis)命令中绘制y轴的值,但这是用于使用数值绘制x轴的,我感到困惑:-(.+1,用于在解决所有问题后共享解决方案。--旁注,它看起来像是@Luis答案的扩展,很高兴提及此类内容以防止误解。我认为我的代码显然是@Luis答案的扩展。我只想收集所有答案和中讨论的代码这篇文章马上发表,因为其他有同样问题的人可能更容易理解。我下次会详细说明。
tickStep = 6; 
[~,xAxis] = xlsread(filename,Sheet,'A1:A60'); %// read in text data. Use second output 
yAxis = xlsread(filename,Sheet,'B1:B60'); %// read in numeric data
plot(yAxis) %// This uses 1, 2, 3... as x axis values
set(gca,'xtick',1:tickStep:numel(xAxis)) %// set ticks
set(gca,'xticklabel',xAxis(1:tickStep:numel(xAxis)))  %// set ticklabels with your xAxis
xlim([0 numel(xAxis)+1]) %// adjust x axis span
filename='MyData.xlsx'; %// Name of the file
tickStep=1; %// Sets the tick steps
Sheet=2; %// Excel sheet number
[~,xAxis]=xlsread(filename,Sheet,'A1:A5'); %//Reads text data from Excel file. Uses   second output
yAxis=xlsread(filename,Sheet,'B1:B5'); %// Reads numeric data from Excel file.
plot(1:numel(xAxis),yAxis) %// Plots x and y-Axis in numeric format
set(gca,'xtick',1:tickStep:numel(xAxis)) %// Sets the ticks of the x-Axis
set(gca,'xticklabel',xAxis(1:tickStep:numel(xAxis))); %// Plots the text data previously read from the Excel file as x-Axis labels
xlim([0 numel(xAxis)+1]) %//Adjusts x-Axis span
xticklabel_rotate([],90,[],'Fontsize',10) %// Calls and executes the function that rotates the x-Axis labels into a vertical position with a font size of 10