Commit 33dd7d19f14fed32df049822127faed86f4e4f73

Authored by bhklein
1 parent 3f534073

Bug fix

Showing 1 changed file with 23 additions and 25 deletions
openbr/core/plot.cpp
@@ -123,10 +123,28 @@ struct RPlot @@ -123,10 +123,28 @@ struct RPlot
123 } 123 }
124 file.write("data <- rbind(data, tmp)\n"); 124 file.write("data <- rbind(data, tmp)\n");
125 } 125 }
  126 + for (int i=0; i<pivotItems.size(); i++) {
  127 + const int size = pivotItems[i].size();
  128 + if (size > major.size) {
  129 + minor = major;
  130 + major = Pivot(i, size, pivotHeaders[i]);
  131 + } else if (size > minor.size) {
  132 + minor = Pivot(i, size, pivotHeaders[i]);
  133 + }
  134 + }
  135 +
  136 + const QString &smooth = destination.get<QString>("smooth", "");
  137 + major.smooth = !smooth.isEmpty() && (major.header == smooth) && (major.size > 1);
  138 + minor.smooth = !smooth.isEmpty() && (minor.header == smooth) && (minor.size > 1);
  139 + if (major.smooth) major.size = 1;
  140 + if (minor.smooth) minor.size = 1;
  141 + if (major.size < minor.size)
  142 + std::swap(major, minor);
126 143
  144 + flip = minor.header == "Algorithm";
127 // Format data 145 // Format data
128 if (isEvalFormat) 146 if (isEvalFormat)
129 - file.write("\n" 147 + file.write(qPrintable(QString("\n"
130 "# Split data into individual plots\n" 148 "# Split data into individual plots\n"
131 "plot_index = which(names(data)==\"Plot\")\n" 149 "plot_index = which(names(data)==\"Plot\")\n"
132 "Metadata <- data[grep(\"Metadata\",data$Plot),-c(1)]\n" 150 "Metadata <- data[grep(\"Metadata\",data$Plot),-c(1)]\n"
@@ -158,7 +176,7 @@ struct RPlot @@ -158,7 +176,7 @@ struct RPlot
158 "far_labeller <- function(variable,value) { return(far_names[as.character(value)]) }\n" 176 "far_labeller <- function(variable,value) { return(far_names[as.character(value)]) }\n"
159 "\n" 177 "\n"
160 "# Code to format TAR@FAR table\n" 178 "# Code to format TAR@FAR table\n"
161 - "algs <- unique(FT$.)\n" 179 + "algs <- unique(FT$%1)\n"
162 "algs <- algs[!duplicated(algs)]\n" 180 "algs <- algs[!duplicated(algs)]\n"
163 "mat <- matrix(FT$Y,nrow=6,ncol=length(algs),byrow=FALSE)\n" 181 "mat <- matrix(FT$Y,nrow=6,ncol=length(algs),byrow=FALSE)\n"
164 "colnames(mat) <- algs \n" 182 "colnames(mat) <- algs \n"
@@ -169,7 +187,7 @@ struct RPlot @@ -169,7 +187,7 @@ struct RPlot
169 "mat <- matrix(CT$Y,nrow=6,ncol=length(algs),byrow=FALSE)\n" 187 "mat <- matrix(CT$Y,nrow=6,ncol=length(algs),byrow=FALSE)\n"
170 "colnames(mat) <- algs \n" 188 "colnames(mat) <- algs \n"
171 "rownames(mat) <- c(\" Rank 1\", \"Rank 5\", \"Rank 10\", \"Rank 20\", \"Rank 50\", \"Rank 100\")\n" 189 "rownames(mat) <- c(\" Rank 1\", \"Rank 5\", \"Rank 10\", \"Rank 20\", \"Rank 50\", \"Rank 100\")\n"
172 - "CMCtable <- as.table(mat)\n"); 190 + "CMCtable <- as.table(mat)\n").arg(major.header)));
173 191
174 // Open output device 192 // Open output device
175 file.write(qPrintable(QString("\n" 193 file.write(qPrintable(QString("\n"
@@ -197,9 +215,9 @@ struct RPlot @@ -197,9 +215,9 @@ struct RPlot
197 "plot.new()\n" 215 "plot.new()\n"
198 "print(title(\"Gallery * Probe = Genuine + Impostor + Ignored\"))\n" 216 "print(title(\"Gallery * Probe = Genuine + Impostor + Ignored\"))\n"
199 "plot.new()\n" 217 "plot.new()\n"
200 - "print(textplot(FTtable,cex=1))\n" 218 + "print(textplot(FTtable))\n"
201 "print(title(\"Table of True Accept Rates at various False Accept Rates\"))\n" 219 "print(title(\"Table of True Accept Rates at various False Accept Rates\"))\n"
202 - "print(textplot(CMCtable,cex=1))\n" 220 + "print(textplot(CMCtable))\n"
203 "print(title(\"Table of retrieval rate at various ranks\"))\n"; 221 "print(title(\"Table of retrieval rate at various ranks\"))\n";
204 file.write(qPrintable(textplot.arg(PRODUCT_NAME, PRODUCT_VERSION))); 222 file.write(qPrintable(textplot.arg(PRODUCT_NAME, PRODUCT_VERSION)));
205 } 223 }
@@ -207,26 +225,6 @@ struct RPlot @@ -207,26 +225,6 @@ struct RPlot
207 // Write figures 225 // Write figures
208 file.write("\n" 226 file.write("\n"
209 "# Write figures\n"); 227 "# Write figures\n");
210 -  
211 - for (int i=0; i<pivotItems.size(); i++) {  
212 - const int size = pivotItems[i].size();  
213 - if (size > major.size) {  
214 - minor = major;  
215 - major = Pivot(i, size, pivotHeaders[i]);  
216 - } else if (size > minor.size) {  
217 - minor = Pivot(i, size, pivotHeaders[i]);  
218 - }  
219 - }  
220 -  
221 - const QString &smooth = destination.get<QString>("smooth", "");  
222 - major.smooth = !smooth.isEmpty() && (major.header == smooth) && (major.size > 1);  
223 - minor.smooth = !smooth.isEmpty() && (minor.header == smooth) && (minor.size > 1);  
224 - if (major.smooth) major.size = 1;  
225 - if (minor.smooth) minor.size = 1;  
226 - if (major.size < minor.size)  
227 - std::swap(major, minor);  
228 -  
229 - flip = minor.header == "Algorithm";  
230 } 228 }
231 229
232 bool finalize(bool show = false) 230 bool finalize(bool show = false)