Coder Social home page Coder Social logo

blake-madden / wisteria-dataviz Goto Github PK

View Code? Open in Web Editor NEW
12.0 3.0 2.0 13.79 MB

Wisteria Dataviz Library

License: BSD 3-Clause "New" or "Revised" License

CMake 0.53% C++ 99.45% C 0.01%
cpp data-visualization dataviz donut-chart gantt-chart graphs likert likert-scale-survey piechart plotting wxwidgets-library barchart heatmap histogram visualization sankey-diagram wordcloud

wisteria-dataviz's Introduction

Wisteria Dataviz

Linux Build & Unit Tests macOS Build & Unit Tests

cppcheck Microsoft C++ Code Analysis

doxygen i18n-check Spell Check

About

Wisteria Dataviz is data visualization library based on wxWidgets. It includes features such as:

  • Numerous built-in graphs (refer to the Wisteria::Graphs namespace for a full list)
  • Interface for displaying tabular data
  • Built-in printing, copying, and exporting support
  • Data importing (Excel, CSV, tab-delimited, or user-defined delimited files) support
  • Data transformations, such as filtering, pivoting (both longer or wider), subsetting, and recoding
  • Data exporting (CSV, tab-delimited, or user-defined delimited files) support
  • Image support, including the ability to use images for plot and bar backgrounds, logos, and point markers
  • Image effects, such as oil-painting and Sepia tone
  • Effects for boxes and bars, including transparency, a watercolor look, a glassy look, stipple brushes, and color fades
  • Reference lines and areas
  • Pre-defined and extensible color schemes
  • Multi-plot support
    • Graphs can be embedded side-by-side on the same (scrollable) canvas
    • Includes support for setting a common axis for all graphs across a row or down a column

See more in the features overview.

General Workflow

  • Setup the library's settings (optionally) when your application starts
  • Construct a Wisteria::Canvas object (which is a wxScrolledWindow-derived window), and embed it into a wxFrame or wxDialog
  • Import data into a Wisteria::Data::Dataset (or build a dataset), specifying which columns to include and how to classify them
  • Construct a plot object (e.g., Wisteria::Graphs::LinePlot) and pass your dataset to it
  • Customize the plot, as needed
    • Change the colors and styles of the bars, lines, etc.
    • Change the plot background color, or use an image as the background
    • Add titles and captions
    • Adjust the axes, add tickmarks, add custom labels
    • etc.
  • Add the plot (and its legend [if applicable]) to the canvas

Graph Types

Some of the graphs included are:

Basic

Bar Chart (Wisteria::Graphs::BarChart) Line Plot (Wisteria::Graphs::LinePlot)
Pie Chart (Wisteria::Graphs::PieChart) Donut Chart (Wisteria::Graphs::PieChart)
Table (Wisteria::Graphs::Table)
Sankey Diagram (Wisteria::Graphs::SankeyDiagram)
Word Cloud (Wisteria::Graphs::WordCloud)

Business

Gantt Chart (Wisteria::Graphs::GanttChart)
Candlestick Plot (Wisteria::Graphs::CandlestickPlot)

Statistical

Histogram (Wisteria::Graphs::Histogram) Box Plot (Wisteria::Graphs::BoxPlot)
Discrete Heat Map (Wisteria::Graphs::HeatMap) Grouped Discrete Heat Map (Wisteria::Graphs::HeatMap)

Survey Data

3-Point Likert Chart (Wisteria::Graphs::LikertChart)
Pro & Con Roadmap (Wisteria::Graphs::ProConRoadmap)

Social Sciences

W-Curve Plot (Wisteria::Graphs::WCurvePlot)
Linear Regression Roadmap (Wisteria::Graphs::LRRoadmap)

See more in the graphs gallery.

Release Notes

Release information is available here.

Building

First, download Wisteria:

git clone https://github.com/Blake-Madden/Wisteria-Dataviz.git --recurse-submodules

Windows

Get and build wxWidgets 3.2 or higher:

git clone https://github.com/wxWidgets/wxWidgets.git --recurse-submodules

Refer here for how to build wxWidgets.

Next, build Wisteria:

If using CMake GUI, open "CMakeLists.txt" and set wxWidgets_ROOT_DIR to the root folder of wxWidgets. Next, configure and generate a project file for your compiler.

If using Visual Studio, open the Wisteria folder to load the project. Then go to Project -> CMake Settings for Wisteria.... Add an entry for wxWidgets_ROOT_DIR and specify the path to your wxWidgets folder. Save and then build the project.

Linux

Install the following from your repository manager (or build from source):

  • wxWidgets 3.2
  • GTK3 development files (version 3.2 or higher)
  • Threading Building Blocks (libtbb) and its development files

Go into the project folder and run the following to build the library and demo:

cmake ./
cmake --build ./ -j 4

If using KDevelop or VS Code, you can also open the CMake file and build from there.

macOS

Install the following using brew (or build from source):

  • wxWidgets 3.2
  • Threading Building Blocks (tbb)
  • OpenMP (libomp)
  • Doxygen

Go into the project folder and run the following to build the library and demo:

cmake ./
cmake --build ./ -j 4

Documentation

To build the API documentation, open "docs/doxygen/Doxyfile" in Doxygen and run it.

Dependencies

  • wxWidgets 3.2 or higher
  • GTK 3 (Linux)
  • Threading Building Blocks: libtbb (Linux), tbb (macOS)
  • A C++20 compatible compiler
  • OpenMP (optional): libomp (macOS)

If using a version of CMake older than 3.24, please refer to wxWidgets's CMake overview for instructions on how to set up CMake to work with wxWidgets 3.2.

wisteria-dataviz's People

Contributors

blake-madden avatar pbfordev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

wisteria-dataviz's Issues

Arrows used on Likert charts should be optional

Emojis are used for these, so they may not be shown correctly if the font being used doesn't support them. For example, on Linux Mint the default font doesn't appear to support these characters.

Any feature about two Y axies in the chart?

Hi, I'm not familiar with your library.

I'm using a very simple wxMathPlot library for many years.

Now, I need some new features for 2 Y axis, I mean something like:

Plots with different scales — Matplotlib 3.8.3 documentation

Is this possible?

Thanks.

I added a cross reference to wxMathPlot's ticket, it is hard to implement such feature in wxMathPlot library, see : two y axis with different coordinates, one on left and one on right · Issue #20 · GitHubLionel/wxMathPlot

Visual Studio cmake fails (Windows, Visual Studio 2022)

Apologies, I'm not a cmake expert, and I can't build...
I'm using Visual Studio 2022 with all the latest patches, with its built-in cmake.
I installed wxWidgets 3.2.5, and built the libraries (debug 64-bit) using wxWidgets-provided SLN (not cmake).
wxWidgets samples build and run fine (I've written wxWidgets apps before, no problem there).

I tried to follow your instructions for Windows/Visual Studio.
When I first opened the project, settings wanted separate paths for wxWidgets_ROOT_DIR and wxWidgets_LIB_DIR which I provided. First attempt at build wanted path for wxWidgets_wxrc_EXECUTABLE which I added.
Now build fails as follows:
Severity Code Description Project File Line Suppression State Details Error CMake Error at C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES wxWidgets_INCLUDE_DIRS core base adv html ribbon xml xrc qa propgrid) C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake 230

I added wxWidgets_LIBRARIES and wxWidgets_INCLUDE_DIRS to settings but that made no difference.

Again sorry to bother you with this, but any suggestions?
Thanks in advance!
Best Regards, Dave

CMake issues with wxWidgets 3.2

wxWidgets 3.2 requires the very latest CMake because of an update to the findwxWidgets file. Unfortunately, MSVS 2022 includes the prior CMake release, and updating the find file to fix it requires admin permissions on your machine.

May need to explicitly require the latest CMake, which will requiring waiting for MSVC to include that version as well.

Library fails to build with wxWidgets built with WXWIN_COMPATIBILITY_3_0 set to 0

When building the library using wxWidgets built with WXWIN_COMPATIBILITY_3_0 set to 0, this code fails to compile:

https://github.com/Blake-Madden/Wisteria-Dataviz/blob/28a670ba46bb9b61a6bbcc29b6120e98ff2638b3/src/util/logfile.cpp#L113-L153

Error C2039 'timestamp': is not a member of 'wxLogRecordInfo' Wisteria D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\util\logfile.cpp 115

It is because the deprecated wxLogRecordInfo::timestamp is not available anymore:
https://github.com/wxWidgets/wxWidgets/blob/17371d911d9ec68b0c2d98c7f56977523803b392/include/wx/log.h#L151-L153

It is probably simple to fix by just using wxLogRecordInfo::timestampMS divided by 1000, but it could be better to not duplicate wxLogFormatter code and use it (perhaps customized) instead.

BTW, is LogFile::DoLogTextAtLevel() ever called? In wxLog classes it is usually called from DoLogRecord() but you do not call it from there nor call the base method. But I may be missing something.

How do you draw the pie chart?

Hi, I see this image:

https://github.com/Blake-Madden/Wisteria-Dataviz/blob/main/docs/doxygen/images/DonutChart.svg

I just want to now how do you draw the portion of a ring?

I have looked at the source code: Wisteria-Dataviz/piechart.cpp at 6670a45def9539e25f8be0e7c84763ffd202d2ce · Blake-Madden/Wisteria-Dataviz

I see it only have some GDI call like "dc.DrawEllipticArc".

I have a similar question in wx forum, see here: How to draw a portion of a ring?

So, do you use the pen which has the property set like: pen.SetCap(wxCAP_BUTT); or you use other method?

Thanks.

403 forbidden error when connecting to this page

Any page from onlinelibrary.wiley will give a 403 error.

It appears to get getting your institution's information and displaying in the banner, so this information is passed via a browser somehow that libraries like cUrl don't.

Wordcloud feature

Customer has requested a word cloud feature.

  • Must support non-English letters
  • Add image to overview
  • Add dataset
  • Add to demo
  • Add icon

Need a "thicker" option for watercolor bar/box effect

The watercolor effect for bars and boxes uses the library's translucency value, which by default is low. A "thick watercolor" effect is needed that will render the same effect, but not use transparency (or at least be much higher, ~225).

Asserts in sample in Point2D::Draw

When running a sample and trying to show some charts (e.g., Line Plot or Linear Regression Roadmap), an assert is shown:
D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\shapes.cpp(209): assert "m_drawFunction" failed in Wisteria::GraphItems::Shape::Draw(): Shape failed to set drawing function!

Call stack

	WisteriaDemo.exe!Wisteria::GraphItems::Shape::Draw(const wxRect & drawRect, wxDC & dc) Line 209	C++
 	WisteriaDemo.exe!Wisteria::GraphItems::Shape::Draw(wxDC & dc) Line 86	C++
 	WisteriaDemo.exe!Wisteria::GraphItems::Point2D::Draw(wxDC & dc) Line 322	C++
 	WisteriaDemo.exe!Wisteria::GraphItems::Points2D::Draw(wxDC & dc) Line 285	C++
 	WisteriaDemo.exe!Wisteria::Graphs::Graph2D::Draw(wxDC & dc) Line 867	C++
 	WisteriaDemo.exe!Wisteria::Canvas::OnDraw(wxDC & dc) Line 1311	C++

It seems that m_drawFunction is null because m_shape is Blank but as I am not familiar with code I do not know whether the problem is that the m_drawFunction is null when it should not be or whether the assert should take m_shape being Blank into account.

Windows 10 v19044.1889, wxWidgets GIT master built 64-bit Debug Static, both displays set at 125% DPI.

Sorry for flooding the repo with issues, I have not even really tried the library, as I always fail with some issue like this.

Add pattern support

Bar charts (and perhaps pie charts) need the ability to apply user-defined brush patterns. Currently, only background color customizations are supported.

  • Categorical bar chart
  • Histogram
  • Box plot
  • Pie chart

Bugs in sample when importing CSV

Please, if you are not accepting issues, let me know and I will stop submitting them. It's just wxWidgets is in a sore need of a good maintained chart library, so I took interest in yours, thanks for it BTW.

Bug 1
The sample imports its files like this pieData->ImportCSV(L"datasets/Fall Enrollment.csv"...

However, relying on the CWD means that the import fails when the sample is launched from MSVS. Therefore, the sample should for example use wxStandardPaths::GetResourcesDir() and wxFileName to compose the path relative to the executable.

Bug 2
Reporting import error shows two error boxes: one empty followed by one by wxLogError(). When Dataset::ImportText() encounters an error when opening/reading the file, it throws std::runtime_error, passing it a wxString which includes the system error message. However, standard exception uses narrow std::string, so when the system error message contains characters not representable in the current code page, wxString conversion to narrow char produces an empty string:
wisteria-demo-error-empty
As the wxWidgets built-in error reporting mechanism was not suppressed with wxLogNull when using wxTextFile, another error box is produced:
wisteria-demo-logerror

Sankey diagram needed

Sankey diagram is needed for a report. A rudimentary two-column one is fine for now, but more than two columns later could perhaps be useful (although IMO more than three columns is unreadable).

  • Basic Sankey diagram, requiring a "from," "to," and "weight" series of columns
  • Ability to control the color scheme
  • Grouping support (for the first column)

Compile fail on windows 10 + MSYS2 + ninja.exe

Good morning

I am trying to compile the "library" on the wfollowgin environment

  • Windows 10 64bit
$ cat /proc/version
MSYS_NT-10.0-19044 version 3.3.6-341.x86_64 (runneradmin@fv-az277-82) (gcc version 11.3.0 (GCC) ) 2022-10-24 08:25 UTC
$ pacman -Qe
base 2022.06-1
base-devel 2022.01-2
filesystem 2022.01-5
git 2.38.1-1
mingw-w64-clang-x86_64-github-cli 2.18.0-1
mingw-w64-cross-zlib 1.2.11-1
mingw-w64-i686-zlib 1.2.13-1
mingw-w64-ucrt-x86_64-zlib 1.2.13-1
mingw-w64-x86_64-binutils 2.39-2
mingw-w64-x86_64-cmake 3.24.2-4
mingw-w64-x86_64-crt-git 10.0.0.r113.g57fd0b77a-1
mingw-w64-x86_64-gcc 12.2.0-4
mingw-w64-x86_64-gcc-ada 12.2.0-4
mingw-w64-x86_64-gcc-fortran 12.2.0-4
mingw-w64-x86_64-gcc-libgfortran 12.2.0-4
mingw-w64-x86_64-gcc-libs 12.2.0-4
mingw-w64-x86_64-gcc-objc 12.2.0-4
mingw-w64-x86_64-gdb 12.1-4
mingw-w64-x86_64-gdb-multiarch 12.1-4
mingw-w64-x86_64-headers-git 10.0.0.r113.g57fd0b77a-1
mingw-w64-x86_64-libgccjit 12.2.0-4
mingw-w64-x86_64-libmangle-git 10.0.0.r113.g57fd0b77a-1
mingw-w64-x86_64-libwinpthread-git 10.0.0.r113.g57fd0b77a-1
mingw-w64-x86_64-make 4.3-1
mingw-w64-x86_64-pkgconf 1~1.8.0-2
mingw-w64-x86_64-qt6-base 6.4.0-3
mingw-w64-x86_64-tools-git 10.0.0.r113.g57fd0b77a-1
mingw-w64-x86_64-winpthreads-git 10.0.0.r113.g57fd0b77a-1
mingw-w64-x86_64-winstorecompat-git 10.0.0.r113.g57fd0b77a-1
mingw-w64-x86_64-wxwidgets3.2-msw 3.2.1-1
msys2-runtime 3.3.6-3

I have updated the repository as of today

$ git rev-parse HEAD
7c66c88d4b075ef2c01388889ea0f9658e8cbb38

damiano.bolla@P2-DAMIANOB MSYS /c/Users/damiano.bolla/Documents/eclipse-python/Wisteria-Dataviz
$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   CMakeLists.txt

there is one line added to CMakeList.txt

SET(wxWidgets_ROOT_DIR "c:/msys64/mingw64")

The error that appears is

$ ninja.exe
[36/67] Building CXX object CMakeFiles/Wisteria.dir/src/ui/app.cpp.obj
FAILED: CMakeFiles/Wisteria.dir/src/ui/app.cpp.obj
C:\msys64\mingw64\bin\c++.exe -DWXUSINGDLL -D_FILE_OFFSET_BITS=64 -D__WXMSW__ -isystem C:/msys64/mingw64/lib/wx/include/msw-unicode-3.2 -isystem C:/msys64/mingw64/include/w
x-3.2 -g -std=gnu++17 -MD -MT CMakeFiles/Wisteria.dir/src/ui/app.cpp.obj -MF CMakeFiles\Wisteria.dir\src\ui\app.cpp.obj.d -o CMakeFiles/Wisteria.dir/src/ui/app.cpp.obj -c C
:/Users/damiano.bolla/Documents/eclipse-python/Wisteria-Dataviz/src/ui/app.cpp
C:/Users/damiano.bolla/Documents/eclipse-python/Wisteria-Dataviz/src/ui/app.cpp: In constructor 'Wisteria::UI::BaseApp::BaseApp()':
C:/Users/damiano.bolla/Documents/eclipse-python/Wisteria-Dataviz/src/ui/app.cpp:21:5: error: 'wxHandleFatalExceptions' was not declared in this scope; did you mean 'OnFatal
Exception'?
   21 |     wxHandleFatalExceptions();
      |     ^~~~~~~~~~~~~~~~~~~~~~~
      |     OnFatalException
C:/Users/damiano.bolla/Documents/eclipse-python/Wisteria-Dataviz/src/ui/app.cpp: In member function 'void Wisteria::UI::BaseApp::GenerateReport(wxDebugReport::Context)':
C:/Users/damiano.bolla/Documents/eclipse-python/Wisteria-Dataviz/src/ui/app.cpp:279:84: error: cannot convert 'wxString' to 'LPCWSTR' {aka 'const wchar_t*'}
  279 |             ShellExecute(NULL, _DT(L"open"), wxStandardPaths::Get().GetDocumentsDir(),
      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
      |                                                                                    |
      |                                                                                    wxString
In file included from C:/msys64/mingw64/include/windows.h:89,
                 from C:/msys64/mingw64/include/winsock2.h:23,
                 from C:/msys64/mingw64/include/wx-3.2/wx/msw/wrapwin.h:46,
                 from C:/msys64/mingw64/include/wx-3.2/wx/msw/init.h:27,
                 from C:/msys64/mingw64/include/wx-3.2/wx/init.h:58,
                 from C:/msys64/mingw64/include/wx-3.2/wx/app.h:23,
                 from C:/msys64/mingw64/include/wx-3.2/wx/wx.h:25,
                 from C:/Users/damiano.bolla/Documents/eclipse-python/Wisteria-Dataviz/src/ui/app.h:15,
                 from C:/Users/damiano.bolla/Documents/eclipse-python/Wisteria-Dataviz/src/ui/app.cpp:9:
C:/msys64/mingw64/include/shellapi.h:76:79: note:   initializing argument 3 of 'HINSTANCE__* ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT)'
   76 |   SHSTDAPI_(HINSTANCE) ShellExecuteW (HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);
      |                                                                       ~~~~~~~~^~~~~~
[41/67] Building CXX object CMakeFiles/Wisteria.dir/src/ui/controls/searchpanel.cpp.obj
ninja: build stopped: subcommand failed.

Thank you for any possible hint

Documentation is lacking regarding building your own dataset and passing it on to a graph

I'm trying to replicate the Line Plot demo using data from memory instead of a CSV file but I cannot figure it out. The call to SetData() keeps saying "Y column not found for line plot" even though I followed the official instructions. Can somebody who uses this library please translate the following code for me? I need it to load the AVG_GRADE from an array of doubles and WEEK_NAME from an array of strings (any type of string is fine):

linePlotData->ImportCSV(L"/home/leo/Wisteria-Dataviz/datasets/Spelling Grades-custom.csv",
		Data::ImportInfo().
		// first the Y column
		ContinuousColumns({ L"AVG_GRADE"}).
		// group and X
		CategoricalColumns({
			{ L"WEEK_NAME", Data::CategoricalImportMethod::ReadAsStrings }
			}));

The above code is basically the same as the official demo but with only one line instead of two. The CSV file has also been modified to reflect this, and the graph does display correctly. I just can't figure out how to do it from arrays...

Buid fails because reportbuilder.cpp cannot be compiled

Attempting to compile reportbuilder.cpp fails with countless errors, here's a few of them:

Severity	Code	Description	Project	File	Line	Suppression State
Error	C2789	'borderFlags': an object of const-qualified type must be initialized	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2211	
Error	C3536	'borderFlags': cannot be used before it is initialized	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2216	
Error	C2065	'color': undeclared identifier	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	3212	
Error	C2789	'colorValues': an object of const-qualified type must be initialized	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	3208	
Error	C3536	'colorValues': cannot be used before it is initialized	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	3209	
Error	C2065	'columnGrouping': undeclared identifier	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2181	
Error	C2789	'columnGroupings': an object of const-qualified type must be initialized	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2179	
Error	C3536	'columnGroupings': cannot be used before it is initialized	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2180	
Error	C3536	'convertedVars': cannot be used before it is initialized	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2053	
Error	C2039	'GetLastError': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	33	
Error	C2039	'GetValueArrayBool': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2212	
Error	C2039	'GetValueArrayBool': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2410	
Error	C2039	'GetValueArrayNumber': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	610	
Error	C2039	'GetValueArrayNumber': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2120	
Error	C2039	'GetValueArrayNumber': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2179	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	1255	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	1257	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	1273	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	1274	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	1275	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	1548	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	1974	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2049	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	2110	
Error	C2039	'GetValueStringVector': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	3208	
Error	C2789	'isDate': an object of const-qualified type must be initialized	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	1325	
Error	C2039	'IsValueArray': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	3144	
Error	C2039	'IsValueArray': is not a member of 'wxSimpleJSON'	Wisteria	D:\dev\Desktop\Lib\Wisteria-Dataviz-GIT\src\base\reportbuilder.cpp	3205	

I am quite sure I updated the GIT submodules so I have no idea where those missing methods are supposed to come from...

Demo asserts: click on either heatmap icon.

Assert failure below, colorbrewer line 28:
assert((std::isnan(value) || (value >= m_range.first && value <= m_range.second)) && L"Value passed to BrewColor() should be within established data range " "from previous call to BrewColors()!");

Does not build with MSVS in Debug configuration

When attempting to build x64 Debug configuration using generated MSVS solution, I get the error:

Building Custom Rule D:/Dev/Desktop/!Lib/Wisteria-Dataviz-GIT/CMakeLists.txt
2>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(700,5): error MSB6006: "CL.exe" exited with code 2.
2>cl : command line error D8016: '/O2' and '/RTC1' command-line options are incompatible
2>Done building project "Wisteria.vcxproj" -- FAILED.

The Release configuration builds just fine. I built only a couple of libraries with CMake but never encountered this error.

Can you really use CMAKE_BUILD_TYPE like this with multi-config generators:

IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
# /Zc:__cplusplus tells MSVC to set the C++ version to what we are
# actually compiling as. The default behavior in MSVC is to say that the
# C++ version is 98 always (for compatability reasons).
# Turns off C6211 warning: leaking memory due to an exception.
# wxWidgets uses heap-based objects for most everything, and MVSC complains
# about not wrapping all of this logic in try blocks.
TARGET_COMPILE_OPTIONS(Wisteria PUBLIC /Zc:__cplusplus /W3 /WX /Od /wd6211)
ELSE()
TARGET_COMPILE_OPTIONS(Wisteria PUBLIC /Zc:__cplusplus /W3 /WX /O2 /wd6211)
ENDIF()
ELSE()
IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
TARGET_COMPILE_OPTIONS(Wisteria PUBLIC -Wall -Wextra -Wpedantic -Og)
ELSE()
TARGET_COMPILE_OPTIONS(Wisteria PUBLIC -Wall -Wextra -Wpedantic -O2)
ENDIF()
ENDIF()

MSVS 2022 Community 17.1.4
CMake 3.22
wxWidgets current master

Add support for loading a report spec file

Would be nice to be able to import a JSON file that describes a canvas (or series of canvases) and all of its contents.
This should include:

  • Datasets
  • Reference lines and areas
  • Annotations on graphs
  • Graph backgrounds and images
  • Text labels
  • Images
  • Line plots
  • Pie charts
  • Bar charts
  • Histograms
  • Box plots
  • LR Roadmaps
  • Pro Con Roadmaps
  • Candlestick plot
  • Likert charts
  • Gantt charts
  • Heatmaps
  • W-Curve plots
  • Tables
  • Shapes
  • Fillable shapes
  • Printing of multiple pages
  • Paper size

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.