How do I create a multiline plot using values from a table?
显示 更早的评论
For example, I have a table:
User Date1 Date2 ....(I have 500+ dates)
{'A'} 1 6 ...
{'B'} 2 8 ...
{'C'} 3 9 ...
{'D'} 4 11 ...
The dates would be located in the x-axis and the values would be in the y-axis. Each user would be a separate line on that graph. I was thinking of converting it to an array and then attempting to plot that but that method does not seem to be working since I have different types of data in this table. What would be the most efficient way of doing this?
4 个评论
Nora Khaled
2020-11-12
so for each user you want diffrent line and data1 is the x axis then for Data2 ~ Data500 are the in the y axis ?
Aryan Cross
2020-11-12
Subhadeep Koley
2020-11-12
Aryan Cross what all "different types of data" your table has?
In order to plot a particular value (for a certain user and date), the value needs to be numeric. And if values are numeric then converting them to array before plotting seems an efficient way.
Aryan Cross
2020-11-12
回答(1 个)
Nora Khaled
2020-11-12
If I understand the problem correctly this might help
% creating tabel exampel
col1 = {'A';'B';'C';'D';'E'};
col2 = [1:1:5]';
col3 = randi(5,5,1);
col4 = randi(5,5,1);
col5 = randi(5,5,1);
col6 = randi(5,5,1);
my_table = table(col1,col2,col3,col4,col5,col6);
%plot data for each user
[r,c]=size(my_table);
for i=2:1:r
plot(my_table{i,2:end});
hold on;
end
legend(my_table{:,1});
8 个评论
Aryan Cross
2020-11-12
Nora Khaled
2020-11-12
编辑:Nora Khaled
2020-11-12
add this line:
set(gca,'xticklabel',my_table.Properties.VariableNames)
Nora Khaled
2020-11-12
or this to control the text angle:
set(gca,'XTickLabel',my_table.Properties.VariableNames, 'XTickLabelRotation',45)
Aryan Cross
2020-11-12
Nora Khaled
2020-11-12
to remove the "user" use:
set(gca,'XTickLabel',my_table.Properties.VariableNames(2:end), 'XTickLabelRotation',45)
But I don't get what you mean by "t is also only countring the 1st 3 column variables when minimized and 6 when it is maximized instead of going all the way till the end."
Aryan Cross
2020-11-12
Aryan Cross
2020-11-12
Nora Khaled
2020-11-13
Ok... try this:
set(gca,'XTick',1:length(my_table.Properties.VariableNames(2:end)),'XTickLabel',my_table.Properties.VariableNames(2:end), 'XTickLabelRotation',45)
Also, change the loop vaiable to start from 1 :
for i=1:1:r
plot(my_table{i,2:end});
hold on;
end
类别
在 帮助中心 和 File Exchange 中查找有关 Axis Labels 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
