How do I change a string object into a variable name that heatmap accepts

5 views (last 30 days)
I have a string array of table variable names that i want to feed into heatmap. I use 'for' to loop through a table to generate heatmaps that go to power point.
heatmap(engine_config, group_perms(i,1), group_perms(i,2))
I get this error.
Error using heatmap
'XVariable' value does not refer to a valid variable in the source table.
Caused by:
Unrecognized table variable name 'group1'.
heatmap wants this, not string:
heatmap(engine_config, 'group_1', 'group_2')
This is probably a real simple solution. I have not nailed down the use of brackets/parenthases to get the right data type.
I have tried some matlab conversions but no luck.
Any help is appreciated.
group_perms 10x2 string
group1 group2
group1 group4
group1 group5
group1 group3
group2 group4
group2 group5
group2 group3
group4 group5
group4 group3
group5 group3
obtained using
group_perms = nchoosek(group_vars, 2);
group_vars is a string array of a subset of variable names in my large dataset. I use my string array throughout my program.

Accepted Answer

Adam Danz
Adam Danz on 4 Jan 2023
Edited: Adam Danz on 4 Jan 2023
If nchoosek returns a cell array of strings, you can index them using { }
try this.
heatmap(engine_config, group_perms{i,1}, group_perms{i,2})
or this to convert it to string array
group_perms = string(nchoosek(group_vars, 2));
heatmap(engine_config, group_perms(i,1), group_perms(i,2))
  3 Comments
Adam Danz
Adam Danz on 4 Jan 2023
For my own sanity, could you show me exactly what this returns:
group_perms(i,1)
As well as this
engine_config.Properties.VariableNames
assuming this is your table.
Ted H
Ted H on 4 Jan 2023
Thanks. This found my problem. There was a variable name in the string array that ended up not being in my table (its a large table with changes). And I read the error message as being a data type issue, not a missing object issue.
heatmap(engine_config, group_perms(i,1), group_perms(i,2))
is the correct syntax.
Thanks!

Sign in to comment.

More Answers (1)

Steven Lord
Steven Lord on 4 Jan 2023
This seems to work with a simpler example.
T = array2table(magic(5))
T = 5×5 table
Var1 Var2 Var3 Var4 Var5 ____ ____ ____ ____ ____ 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
V = string(T.Properties.VariableNames)
V = 1×5 string array
"Var1" "Var2" "Var3" "Var4" "Var5"
heatmap(T, V(2), V(5)) % Using variables 2 and 5 as an example
Looking at your code, the example you posted that you said worked used "group_1" and "group_2" as variable names but the error message calls out that "group1" (no underscore) is not a variable in your table. What do your group_perms and group_vars variables contain: "group_1" or "group1"?
  1 Comment
Ted H
Ted H on 4 Jan 2023
See comment in other answer. I did find the problem and it is a missing object (wrong variable name), not a data type problem, which I assumed when i read the error.

Sign in to comment.

Categories

Find more on Data Distribution Plots in Help Center and File Exchange

Tags

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!