Clear Filters
Clear Filters

(Again) plots do not appear on the graph

1 view (last 30 days)
I am trying to solve a simple problem. I have a bunch of data in neat little columns. So, if a particular record has the value "Dealer" in it's 'Seller' column, I want that particular record's data to be plotted using blue colored markers and green if the "Seller" column does not have "Dealer" for that particular record.
I hashed out some code, but it is not working. The graph appears, but no plots.
while i < 302
if Seller(i) == "Dealer" % __[1]
plot(year(i), distance(i), '.b') % ___[2]
Hold on;
i = i + 1;
else
plot(year(i), distance(i), '.r')
Hold on;
i = i + 1;
end
end
I have tried using the commands [1] and [2] Individually and they seem to be working but the whole thing does not work at all....
My data is very simple table. distance and year are like ===>
27000
1900
6.900
5.200
....
....
But in seperate columns. Note that the 0's at end are there because I just divided all values by 1000.
Any help?
  2 Comments
John D'Errico
John D'Errico on 11 Apr 2020
You seem to indicate you are asking this again, but I don't see where it was asked before.
Anyway, we don't actually have your data. Just something vaguely related to your data. We don't actually see all of your code, or how you use this.
For example, what was i initially? Did you ever initiaize i?
You talk about neat little columns, but we don't see any columns.
So if you want serious help, you need to seriously show what you are doing, rather than a vague approximation to what you may be doing. Otherwise, anything that is said by us would be just a wild guess.
Neel Gupta
Neel Gupta on 12 Apr 2020
Ahh, I thought that my 'vague approximation' might be of some help as my data would just be like it, but with more rows. However I have attached the whole file, but am using only two columns - kms_driven and Year.
Also, this is how my code looks like. Hope it makes sense :--
% Making a Linear Regressor using MatLab!
% Initialize it first....
close all;
filename = 'car data.csv' % open file (make sure it exist in the current folder)
i = 1; % Initialize
T = readtable(filename); % read file as table
year = T.Year;
distance = T.Kms_Driven;
Seller = T.Seller_Type;
% while i < 302 % Just normalizing that data. Ignore
% distance(i) = distance(i)/1000
% i = i + 1;
% end
while i < 302
if Seller(i) == "Dealer"
plot(year(i), distance(i), '.b')
Hold on;
i = i + 1;
else
plot(year(i), distance(i), '.r')
Hold on;
i = i + 1;
end
end
axis equal normal;

Sign in to comment.

Accepted Answer

Peng Li
Peng Li on 11 Apr 2020
Edited: Peng Li on 11 Apr 2020
Without data it’s difficult to tell. You tried set a break point and see if it ever appears any points?
Based on your description I think you prob don’t need a while loop.
Try
plot(year(Seller == Dealer), distance(Seller == Dealer), '.b');
hold on;
plot(year(Seller ~= Dealer), distance(Seller ~= Dealer), '.r');
  2 Comments
Neel Gupta
Neel Gupta on 14 Apr 2020
Even though your answer wasn't used by me, I realised that I was writing
Hold off;
instead of
hold off;
Now it works as expected
Peng Li
Peng Li on 14 Apr 2020
I thought it was your typo here. Then it seems you never read your command window error message as when you run it matlab must have complained about this Hold stuff as it could not recognize it.
Anyway, instead of using your while loop, why don't you try this eaiser way?
figure
plot(year(Seller == "Dealer"), distance(Seller == "Dealer"), '.b');
hold on;
plot(year(Seller ~= "Dealer"), distance(Seller ~= "Dealer"), '.r');
left: your code; Right: my code. some red dots appear on top of blue dots on my code which is a matter of order when data were drawn.

Sign in to comment.

More Answers (0)

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!