9 #ifndef vtkXYChartRepresentationInternals_h
10 #define vtkXYChartRepresentationInternals_h
45 class PlotsMap :
public std::map<std::string, PlotsMapItem>
47 bool Contains(
const std::string&
key,
const std::string& role)
const
49 PlotsMap::const_iterator iter1 = this->find(
key);
50 if (iter1 != this->end())
52 PlotsMapItem::const_iterator iter2 = iter1->second.find(role);
53 return (iter2 != iter1->second.end());
60 const std::string& columnName,
const std::string& role = std::string())
const
62 const std::string
key =
self->GetDefaultSeriesLabel(tableName, columnName);
63 PlotsMap::const_iterator iter1 = this->find(
key);
64 if (iter1 != this->end())
66 PlotsMapItem::const_iterator iter2 = iter1->second.find(role);
67 if (iter2 != iter1->second.end())
69 return iter2->second.Plot;
76 const std::string& columnName,
const std::string& role = std::string())
78 const std::string
key =
self->GetDefaultSeriesLabel(tableName, columnName);
79 PlotsMap::iterator iter1 = this->find(
key);
80 if (iter1 != this->end())
82 PlotsMapItem::iterator iter2 = iter1->second.find(role);
83 if (iter2 != iter1->second.end())
85 iter1->second.erase(iter2);
93 const std::string& columnName,
const std::string& role,
vtkPlot* plot)
95 const std::string
key =
self->GetDefaultSeriesLabel(tableName, columnName);
97 info.TableName = tableName;
98 info.ColumnName = columnName;
104 for (PlotsMap::const_iterator iter1 = this->begin(); iter1 != this->end(); ++iter1)
106 for (PlotsMapItem::const_iterator iter2 = iter1->second.begin();
107 iter2 != iter1->second.end(); ++iter2)
109 iter2->second.Plot->SetVisible(val);
116 for (PlotsMap::const_iterator iter1 = this->begin(); iter1 != this->end(); ++iter1)
118 for (PlotsMapItem::const_iterator iter2 = iter1->second.begin();
119 iter2 != iter1->second.end(); ++iter2)
129 for (PlotsMap::iterator iter1 = this->begin(); iter1 != this->end(); ++iter1)
131 for (PlotsMapItem::iterator iter2 = iter1->second.begin(); iter2 != iter1->second.end();)
133 if (other.Contains(iter1->first, iter2->first) ==
false)
136 PlotsMapItem::iterator iter2old = iter2;
138 iter1->second.erase(iter2old);
162 const std::string& columnName,
const std::string& vtkNotUsed(role),
163 const std::map<std::string, T>& parameter_map,
const T default_value = T())
const
165 typename std::map<std::string, T>::const_iterator iter;
172 std::string
key =
self->GetDefaultSeriesLabel(tableName, columnName);
173 iter = parameter_map.find(
key);
174 if (iter != parameter_map.end())
180 key =
self->GetDefaultSeriesLabel(std::string(), columnName);
181 iter = parameter_map.find(
key);
182 if (iter != parameter_map.end())
186 return default_value;
198 std::map<std::string, vtkColor3d>
Colors;
203 std::map<std::string, std::string>
Labels;
205 std::map<std::string, vtkScalarsToColors*>
Lut;
239 const std::string& vtkNotUsed(tableName),
const std::string& vtkNotUsed(columnName))
241 return { std::string() };
249 const std::string& columnName,
const std::string& role,
unsigned int block = 0)
259 return chartXY->
AddPlot(self->GetChartType(), block);
264 const std::string& vtkNotUsed(columnName),
const std::string& vtkNotUsed(role))
276 assert(
self !=
nullptr);
279 std::multimap<int, std::pair<vtkTable*, TableInfo>> orderMap;
280 for (MapOfTables::const_iterator tablesIter = tables.begin(); tablesIter != tables.end();
283 const std::string& tableName = tablesIter->first;
284 vtkTable* table = tablesIter->second.first.GetPointer();
286 for (
vtkIdType cc = 0; cc < numCols; ++cc)
291 for (
const auto& role : roles)
299 info.TableName = tableName;
300 info.ColumnName = columnName;
302 info.Block = tablesIter->second.second;
303 orderMap.insert(std::make_pair(
order, std::make_pair(tablesIter->second.first,
info)));
309 for (
auto it = orderMap.begin(); it != orderMap.end(); ++it)
335 this->SeriesPlots.
Intersect(newPlots, chartXY);
345 vtkPlot* lastFunctionalBagPlot =
nullptr;
346 for (PlotsMap::iterator iter1 = this->SeriesPlots.begin(); iter1 != this->SeriesPlots.end();
349 for (PlotsMapItem::const_iterator iter2 = iter1->second.begin(); iter2 != iter1->second.end();
352 const PlotInfo& plotInfo = iter2->second;
353 const std::string& tableName = plotInfo.
TableName;
354 const std::string& columnName = plotInfo.
ColumnName;
356 const std::string& role = iter2->first;
365 if (columnName ==
"QMedianLine")
369 if (plotBag->
IsBag())
371 if (!lastFunctionalBagPlot)
379 lastFunctionalBagPlot = plotBag;
393 for (PlotsMap::iterator iter1 = this->SeriesPlots.begin(); iter1 != this->SeriesPlots.end();
396 for (PlotsMapItem::const_iterator iter2 = iter1->second.begin(); iter2 != iter1->second.end();
399 const PlotInfo& plotInfo = iter2->second;
405 const std::string& columnName = plotInfo.
ColumnName;
411 if (yarray !=
nullptr)
413 const std::string plotName = plot->
GetLabel();
414 exporter->
AddColumn(yarray, plotName.c_str(), xarray);
415 exporter->
AddStyle(plot, plotName.c_str());
431 const std::string& tableName,
const std::string& columnName,
const std::string& role,
436 this->
GetSeriesParameter(
self, tableName, columnName, role, this->SeriesVisibilities,
false);
443 std::string default_label =
self->GetDefaultSeriesLabel(tableName, columnName);
445 this->
GetSeriesParameter(
self, tableName, columnName, role, this->Labels, default_label);
446 if (self->GetSeriesLabelPrefix())
448 label = std::string(self->GetSeriesLabelPrefix()) + label;
453 self, tableName, columnName, role, this->Colors,
vtkColor3d(0, 0, 0));
456 plot->SetColorF(
color.GetRed(),
color.GetGreen(),
color.GetBlue(), opacity);
460 this->
GetSeriesParameter(
self, tableName, columnName, role, this->LineThicknesses, 2));
462 self, tableName, columnName, role, this->LineStyles,
static_cast<int>(
vtkPen::SOLID_LINE)));
466 plotPoints->SetMarkerStyle(this->
GetSeriesParameter(
self, tableName, columnName, role,
468 plotPoints->SetMarkerSize(
473 plotPoints->SetValidPointMaskName(
"vtkValidPointMask");
477 plot, this->
GetSeriesParameter(
self, tableName, columnName, role, this->AxisCorners, 0));
481 if (plotBar && columnName ==
"bin_values")
484 this->
GetSeriesParameter(
self, tableName, columnName, role, this->UseColorMapping,
false);
488 self, tableName, columnName, role, this->Lut,
static_cast<vtkScalarsToColors*
>(
nullptr));