Problem plotting with 4 columns

Hi all, I am trying to plot this function, but getting so many errors. I first got this error: "A numeric or double convertible argument is expected" So I converted the table to array, then I got this error: "Size mismatch in Param Cell / Value Cell pair" I ran out of ideas ! Basically, I need x to be the dates (using standard formats, all days showing) y to show 3 columns: min, max and difference between them Here is my code, I have also attached the data file. Any help would be highly appreciated ! Thanks a lot!
clear
clc
Table_Q7=readtable('Test_data7.csv');
x_tbl=Table_Q7(6:end,2);
%tbl 2 array
x=table2array(x_tbl);
%ymin tbl2array
y_min_tbl=Table_Q7(6:end,3);
y_min=table2array(y_min_tbl);
%ymax tbl2array
y_max_tbl=Table_Q7(6:end,4);
y_max=table2array(y_max_tbl);
%y difference between max and min
y_diff_tbl=Table_Q7(6:end,5);
y_diff=table2array(y_diff_tbl);
%y=table2array(y_tbl)
plot(x,[y_max,y_min,y_diff])

 Risposta accettata

jonas
jonas il 1 Set 2018
Modificato: jonas il 1 Set 2018
Here's a solution using textscan instead of readtable
fid=fopen('Test_data7.csv')
formatSpec='%s%d%d%d';
out=textscan(fid,formatSpec,...
'delimiter',',',...
'MultipleDelimsAsOne',true,...
'collectoutput',true,...
'HeaderLines',6)
fclose(fid);
t=datetime(out{1});
data=out{2};
plot(t,data)

2 Commenti

D.J
D.J il 1 Set 2018
Perfect ! Thanks a million ...Much appreciated !!
jonas
jonas il 1 Set 2018
No problem, happy to help!

Accedi per commentare.

Più risposte (2)

jonas
jonas il 1 Set 2018
Modificato: jonas il 1 Set 2018
The problem is with your data import, as the csv is a bit messy. This is the cleanest import out of many attempts. Results attached.
opts=detectImportOptions('Test_data7.csv','Delimiter',',','NumHeaderLines',5)
opts.ExtraColumnsRule='ignore'
opts.SelectedVariableNames={'Date','MinTemp','MaxTemp','DiffTemp'}
T=readtable('Test_data7.csv',opts);
TT=table2timetable(T);
plot(TT.Date,TT.Variables)

12 Commenti

D.J
D.J il 1 Set 2018
I am getting this error: Undefined function or variable 'detectImportOptions'
D.J
D.J il 1 Set 2018
I am afraid still not working. Getting the same error ..
D.J
D.J il 1 Set 2018
Is it actually working at your end?
jonas
jonas il 1 Set 2018
Modificato: jonas il 1 Set 2018
What MATLAB release are you using? Can you paste the first rows of the output of readtable, assuming that you are able to use detectImportOptions? It's working fine on my end yep.
D.J
D.J il 1 Set 2018
I am using Matlab R2015b I have never used deteImportOptions. I tried to find details about it in the documentation, but there is nothing there !
jonas
jonas il 1 Set 2018
Modificato: jonas il 1 Set 2018
Introduced in R2016b
A few options:
  • Maybe we can solve it without a clean import. Can you copy-paste the first rows of your readtable output?
  • Update your MATLAB release
  • We can use csvread or textscan instead.
D.J
D.J il 1 Set 2018
Modificato: D.J il 1 Set 2018
This is what I am getting:
Undefined function or variable 'detectImportOptions'.
Error in plot_7_T (line 24)
opts=detectImportOptions('Test_data7.csv','Delimiter',',','NumHeaderLines',5)
>>
jonas
jonas il 1 Set 2018
Modificato: jonas il 1 Set 2018
Well, I mean in your original code. Output of this:
Table_Q7=readtable('Test_data7.csv');
Only copy first 2-3 rows, or this comment chain becomes hard to read.
Is this what you need? if you can't read it, I attached a snapshot of it:
'ttt' '' '' '' '' NaN NaN NaN NaN NaN
'ttt' '' '' '' '' NaN NaN NaN NaN NaN
'ttt' '' '' '' '' NaN NaN NaN NaN NaN
'' '' '' '' '' NaN NaN NaN NaN NaN
'' 'Date' 'MinTemp' 'MaxTemp' 'DiffTemp' NaN NaN NaN NaN NaN
'' '1/07/2017' '2.2' '19.7' '17.5' NaN NaN NaN NaN NaN
'' '2/07/2017' '2' '21' '19' NaN NaN NaN NaN NaN
'' '3/07/2017' '4.9' '21.4' '16.5' NaN NaN NaN NaN NaN
'' '4/07/2017' '9.5' '25.3' '15.8' NaN NaN NaN NaN NaN
'' '5/07/2017' '8.6' '25' '16.4' NaN NaN NaN NaN NaN
'' '6/07/2017' '5.5' '21.8' '16.3' NaN NaN NaN NaN NaN
'' '7/07/2017' '9.5' '18.9' '9.4' NaN NaN NaN NaN NaN
D.J
D.J il 1 Set 2018
Modificato: D.J il 1 Set 2018
I don't want to take the risk of updating my matlab. I am worried the software might be stuffed up completely. It is the student version from the university, and if I get an technical problems due to the update, I won't be able to get any help during the weekend.
jonas
jonas il 1 Set 2018
Thanks. That output is not very useful. I'll come back with another solution shortly.
jonas
jonas il 1 Set 2018
Posted a separate answer using textscan. I understand your concern. I used release 2013a for 3-4 years until I was finally forced to update as I needed to use the latest image processing functions. I saved the old release just-in-case, but I have never had to use it :)

Accedi per commentare.

D.J
D.J il 1 Set 2018

0 voti

Thanks a lot Jonas. I really appreciate your help !

1 Commento

jonas
jonas il 1 Set 2018
If any one of the answers solved your problem please accept it ;)

Accedi per commentare.

Richiesto:

D.J
il 1 Set 2018

Commentato:

il 1 Set 2018

Community Treasure Hunt

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

Start Hunting!

Translated by