Merge branch 'master' into add_qt6_compatibility

This commit is contained in:
jkriege2 2022-04-21 21:28:49 +02:00
commit 6bcb0b9a9f
19 changed files with 149 additions and 92 deletions

44
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,44 @@
# Contributing
When contributing to this repository, please simply open a new [PULL REQUEST](https://github.com/jkriege2/JKQtPlotter/pulls).
If you want to simply report a bug for which you don't have a solution, please simply open a new [ISSUE](https://github.com/jkriege2/JKQtPlotter/issues).
Please note we have a code of conduct, please follow it in all your interactions with the project.
# Pull Request Process
Please ensure that your PR follows these guidelines:
- Please describe your changes with enough detail to easily understand them. As a plotting library is a profoundly visual thing, please add screenshots to illustrate your changes.
- Reference [ISSUE](https://github.com/jkriege2/JKQtPlotter/issues)s connnected to your PR
- ensure your code changes do compile at least for the most recent supported Qt version (currently Qt 5.15.x, in future also Qt 6). Please look at the results of the CI-builds and code-analysis and fix errors that are noted there.
- ensure that you fix all conflicts, before the PR can be merged
- ideally, please ensure that no new compiler warnings are generated
- ensure that you are happy to comply with the [librariy's license](https://github.com/jkriege2/JKQtPlotter/blob/master/LICENSE)
# Our Standards
Examples of behavior that contributes to creating a positive environment include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
# Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
# Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
# Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at jan@jkrieger.de. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

View File

@ -22,7 +22,7 @@ This software is licensed under the term of the [GNU Lesser General Public Licen
[![Open PRs](https://img.shields.io/github/issues-pr/jkriege2/JKQtPlotter)](https://github.com/jkriege2/JKQtPlotter/pulls)
[![Closed PRs](https://img.shields.io/github/issues-pr-closed/jkriege2/JKQtPlotter)](https://github.com/jkriege2/JKQtPlotter/pulls?q=is%3Apr+is%3Aclosed)
[![Code Quality](https://www.code-inspector.com/project/12216/score/svg) ![Code Grade](https://www.code-inspector.com/project/12216/status/svg)](https://frontend.code-inspector.com/public/project/12216/JKQtPlotter/dashboard)
[![CodeQL](https://github.com/jkriege2/JKQtPlotter/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/jkriege2/JKQtPlotter/actions/workflows/codeql-analysis.yml)
![EXAMPLES-Page](./screenshots/examplesbanner.png)

11
SECURITY.md Normal file
View File

@ -0,0 +1,11 @@
# Security Policy
## Supported Versions
Only the most current release is supported for security updates!
## Reporting a Vulnerability
Please report vulnerabilities by opening a GitHub [ISSUE](https://github.com/jkriege2/JKQtPlotter/issues) or by opening a [PULL REQUEST](https://github.com/jkriege2/JKQtPlotter/pulls) that fixes the issue!
Please also ensure to check whether your vulnerability has already been reported.

View File

@ -28,6 +28,7 @@
#include <cfloat>
#include <stdint.h>
#include <QColor>
#include <vector>
#include "jkqtcommon/jkqtcommon_imexport.h"
#include "jkqtcommon/jkqtpmathtools.h"
@ -654,17 +655,17 @@ inline void JKQTPImagePlot_array2RGBimage(const T* dbl_in, int width, int height
const T* dbl=dbl_in;
T* dbllog=nullptr;
QVector<T> dbllog;
if (logScale) {
double logB=log10(logBase);
dbllog=static_cast<T*>(malloc(width*height*sizeof(T)));
dbllog.resize(static_cast<size_t>(width)*static_cast<size_t>(height));
//memcpy(dbl, dbl_in, width*height*sizeof(T));
for (int i=0; i<width*height; i++) {
dbllog[i]=log10(dbl_in[i])/logB;
}
min=log10(min)/logB;
max=log10(max)/logB;
dbl=dbllog;
dbl=dbllog.data();
}
double delta=max-min;
@ -865,8 +866,6 @@ inline void JKQTPImagePlot_array2RGBimage(const T* dbl_in, int width, int height
}
}
}
if (logScale) free(dbllog);
}

View File

@ -214,7 +214,7 @@ std::string jkqtp_tolower(const std::string& s){
if (ensurePlusMinus) return "+\\rm{0}";
else return "\\rm{0}";
}
if (fabs(data)<5*std::numeric_limits<double>::epsilon()) {
if (fabs(data)<5.0*std::numeric_limits<double>::min()) {
if (ensurePlusMinus) return "+\\rm{0}";
else return "\\rm{0}";
}
@ -244,7 +244,7 @@ std::string jkqtp_tolower(const std::string& s){
std::string jkqtp_floattohtmlstr(double data, int past_comma, bool remove_trail0, double belowIsZero, double minNoExponent, double maxNoExponent){
std::string result;
if ((belowIsZero>0) && (fabs(data)<belowIsZero)) return "0";
if (fabs(data)<5*std::numeric_limits<double>::epsilon()) return "0";
if (fabs(data)<5.0*std::numeric_limits<double>::min()) return "0";
double adata=fabs(data);
std::string res=jkqtp_floattostr(data, past_comma, remove_trail0);

View File

@ -63,7 +63,7 @@ void JKQTPContourPlot::draw(JKQTPEnhancedPainter &painter)
int64_t colChecksum=-1;
if (data && Nx*Ny>0) {
colChecksum=static_cast<int64_t>(qChecksum(reinterpret_cast<const char*>(data), Nx*Ny* getSampleSize()/sizeof(char)));
colChecksum=static_cast<int64_t>(qChecksum(reinterpret_cast<const char*>(data), static_cast<int64_t>(Nx)*static_cast<int64_t>(Ny)* static_cast<int64_t>(getSampleSize()/sizeof(char))));
}
/*if (parent && parent->getDatastore() && imageColumn>=0) {
colChecksum=static_cast<int64_t>(parent->getDatastore()->getColumnChecksum(imageColumn));

View File

@ -367,15 +367,14 @@ int JKQTPColumnOverlayImageEnhanced::getImageColumn() const
void JKQTPColumnOverlayImageEnhanced::draw(JKQTPEnhancedPainter &painter) {
const double* d=parent->getDatastore()->getColumnPointer(imageColumn,0);
size_t imgSize=parent->getDatastore()->getRows(imageColumn);
bool* locData=static_cast<bool*>(malloc(imgSize*sizeof(bool)));
this->data=locData;
QVector<bool> locData(imgSize,false);
this->data=locData.data();
this->Ny= static_cast<int>(imgSize/this->Nx);
for (size_t i=0; i<imgSize; i++) {
locData[i]=(d[i]!=0.0);
}
JKQTPOverlayImageEnhanced::draw(painter);
free(locData);
data=nullptr;
this->data=nullptr;
}
bool JKQTPColumnOverlayImageEnhanced::usesColumn(int c) const

View File

@ -438,7 +438,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTBasePlotter: public QObject {
*
* \see JKQTPSetSystemDefaultBaseStyle(), JKQTPSetSystemDefaultBaseStyle(), getCurrentPlotterStyle(), \ref jkqtpplotter_styling
*/
void loadCurrentPlotterStyle(const QSettings& settings, const QString& group="plot/");
void loadCurrentPlotterStyle(const QSettings& settings, const QString& group="plots/");
/** \brief store the current style properties for this JKQTBasePlotter with properties loaded from \a settings
*
* \param settings the QSettings object to write to
@ -446,7 +446,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTBasePlotter: public QObject {
*
* \see JKQTPSetSystemDefaultBaseStyle(), JKQTPSetSystemDefaultBaseStyle(), getCurrentPlotterStyle(), \ref jkqtpplotter_styling
*/
void saveCurrentPlotterStyle(QSettings& settings, const QString& group="plot/") const;
void saveCurrentPlotterStyle(QSettings& settings, const QString& group="plots/") const;

View File

@ -688,7 +688,7 @@ size_t JKQTPDatastore::copyColumn(size_t old_column, size_t start, size_t stride
{
JKQTPColumn old=columns[old_column];
size_t rows=old.getRows();
double* d=static_cast<double*>(malloc(rows*sizeof(double)));
QVector<double> d(rows, 0.0);
double* dd=old.getPointer(0);
size_t j=0;
for (size_t i=start; i<rows; i+=stride) {
@ -696,8 +696,7 @@ size_t JKQTPDatastore::copyColumn(size_t old_column, size_t start, size_t stride
//qDebug()<<old_column<<name<<": "<<j<<i<<d[j];
j++;
}
size_t n=addCopiedColumn(d, j, name);
free(d);
size_t n=addCopiedColumn(d.data(), j, name);
return n;
}

View File

@ -880,9 +880,9 @@ void JKQTPlotter::resetCurrentMouseDragAction () {
}
void JKQTPlotter::mouseDoubleClickEvent ( QMouseEvent * event ){
auto itAction=findMatchingMouseDoubleClickAction(event->button(), event->modifiers());
if (itAction!=plotterStyle.registeredMouseDoubleClickActions.end()) {
bool foundIT=false;
JKQTPMouseDoubleClickActionsHashMapIterator itAction=findMatchingMouseDoubleClickAction(event->button(), event->modifiers(), &foundIT);
if (foundIT) {
// we found an action to perform on this double-click
if (itAction.value()==JKQTPMouseDoubleClickActions::jkqtpdcaClickOpensContextMenu) {
openStandardContextMenu(event->x(), event->y());
@ -957,11 +957,12 @@ void JKQTPlotter::wheelEvent ( QWheelEvent * event ) {
#endif
//qDebug()<<"wheelEvent("<<event->modifiers()<<"): plotterStyle.registeredMouseWheelActions="<<plotterStyle.registeredMouseWheelActions;
auto itAction=findMatchingMouseWheelAction(event->modifiers());
bool foundIT=false;
auto itAction=findMatchingMouseWheelAction(event->modifiers(), &foundIT);
//qDebug()<<"wheelEvent("<<event->modifiers()<<"): plotterStyle.registeredMouseWheelActions="<<plotterStyle.registeredMouseWheelActions;
//qDebug()<<"wheelEvent("<<event->modifiers()<<"): itAction="<<itAction.key()<<","<<itAction.value()<<" !=end:"<<(itAction!=plotterStyle.registeredMouseWheelActions.end())<<" ==end:"<<(itAction==plotterStyle.registeredMouseWheelActions.end());
if (itAction!=plotterStyle.registeredMouseWheelActions.end()) {
if (foundIT) {
if (itAction.value()==JKQTPMouseWheelActions::jkqtpmwaZoomByWheel) {
//if (act==JKQTPMouseWheelActions::jkqtpmwaZoomByWheel) {
//qDebug()<<"wheelEvent("<<event->modifiers()<<"):ZoomByWheel";
@ -1682,40 +1683,44 @@ void JKQTPlotter::openStandardAndSpecialContextMenu(int x, int y)
JKQTPMouseDragActionsHashMapIterator JKQTPlotter::findMatchingMouseDragAction(Qt::MouseButton button, Qt::KeyboardModifiers modifiers, bool* found) const
{
JKQTPMouseDragActionsHashMapIterator it=registeredOverrideMouseDragActionModes.begin();
while (it!=registeredOverrideMouseDragActionModes.end() ) {
if (it.key()==qMakePair<Qt::MouseButton, Qt::KeyboardModifiers>(button, modifiers)) {
if (found) *found=true;
return it;
}
++it;
}
it=plotterStyle.registeredMouseDragActionModes.begin();
while (it!=plotterStyle.registeredMouseDragActionModes.end() ) {
if (it.key()==qMakePair<Qt::MouseButton, Qt::KeyboardModifiers>(button, modifiers)) {
if (found) *found=true;
return it;
}
++it;
}
if (found) *found=false;
return plotterStyle.registeredMouseDragActionModes.end();
JKQTPMouseDragActionsHashMapIterator it=registeredOverrideMouseDragActionModes.cbegin();
while (it!=registeredOverrideMouseDragActionModes.cend() ) {
if (it.key()==qMakePair<Qt::MouseButton, Qt::KeyboardModifiers>(button, modifiers)) {
if (found) *found=true;
return it;
}
++it;
}
it=plotterStyle.registeredMouseDragActionModes.cbegin();
while (it!=plotterStyle.registeredMouseDragActionModes.cend() ) {
if (it.key()==qMakePair<Qt::MouseButton, Qt::KeyboardModifiers>(button, modifiers)) {
if (found) *found=true;
return it;
}
++it;
}
return plotterStyle.registeredMouseDragActionModes.cend();
}
JKQTPMouseDoubleClickActionsHashMapIterator JKQTPlotter::findMatchingMouseDoubleClickAction(Qt::MouseButton button, Qt::KeyboardModifiers modifiers) const
JKQTPMouseDoubleClickActionsHashMapIterator JKQTPlotter::findMatchingMouseDoubleClickAction(Qt::MouseButton button, Qt::KeyboardModifiers modifiers, bool*found) const
{
for (JKQTPMouseDoubleClickActionsHashMapIterator it=plotterStyle.registeredMouseDoubleClickActions.begin(); it!=plotterStyle.registeredMouseDoubleClickActions.end(); ++it) {
if (found) *found=false;
for (JKQTPMouseDoubleClickActionsHashMapIterator it=plotterStyle.registeredMouseDoubleClickActions.cbegin(); it!=plotterStyle.registeredMouseDoubleClickActions.cend(); ++it) {
if (it.key()==qMakePair<Qt::MouseButton, Qt::KeyboardModifiers>(button, modifiers)) {
if (found) *found=true;
return it;
}
}
return plotterStyle.registeredMouseDoubleClickActions.end();
return plotterStyle.registeredMouseDoubleClickActions.cend();
}
JKQTPMouseWheelActionsHashMapIterator JKQTPlotter::findMatchingMouseWheelAction(Qt::KeyboardModifiers modifiers) const
JKQTPMouseWheelActionsHashMapIterator JKQTPlotter::findMatchingMouseWheelAction(Qt::KeyboardModifiers modifiers, bool *found) const
{
if (found) *found=false;
for (JKQTPMouseWheelActionsHashMapIterator it=plotterStyle.registeredMouseWheelActions.begin(); it!=plotterStyle.registeredMouseWheelActions.end(); ++it) {
if (it.key()==modifiers) {
if (found) *found=true;
return it;
}
}

View File

@ -889,7 +889,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPlotter: public QWidget {
*
* \see JKQTPSetSystemDefaultStyle(), JKQTPSetSystemDefaultStyle(), getCurrentPlotterStyle(), \ref jkqtpplotter_styling
*/
void loadCurrentPlotterStyle(const QSettings& settings, const QString& group="plot/", bool alsoLoadBaseStyle=true);
void loadCurrentPlotterStyle(const QSettings& settings, const QString& group="plots/", bool alsoLoadBaseStyle=true);
/** \brief store the current style properties for this JKQTBasePlotter with properties loaded from \a settings
*
* \param settings the QSettings object to write to
@ -898,7 +898,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPlotter: public QWidget {
*
* \see JKQTPSetSystemDefaultStyle(), JKQTPSetSystemDefaultStyle(), getCurrentPlotterStyle(), \ref jkqtpplotter_styling
*/
void saveCurrentPlotterStyle(QSettings& settings, const QString& group="plot/", bool alsoSaveBaseStyle=true) const;
void saveCurrentPlotterStyle(QSettings& settings, const QString& group="plots/", bool alsoSaveBaseStyle=true) const;
/** \brief \copydoc actMouseLeftAsToolTip */
QAction *getActMouseLeftAsToolTip() const;
@ -1419,10 +1419,10 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPlotter: public QWidget {
JKQTPMouseDragActionsHashMapIterator findMatchingMouseDragAction(Qt::MouseButton button, Qt::KeyboardModifiers modifiers, bool *found=nullptr) const;
/** \brief searches JKQTPlotterStyle::registeredMouseWheelActions for a matching action */
JKQTPMouseWheelActionsHashMapIterator findMatchingMouseWheelAction(Qt::KeyboardModifiers modifiers) const;
JKQTPMouseWheelActionsHashMapIterator findMatchingMouseWheelAction(Qt::KeyboardModifiers modifiers, bool *found=nullptr) const;
/** \brief searches JKQTPlotterStyle::registeredMouseDoubleClickActions for a matching action */
JKQTPMouseDoubleClickActionsHashMapIterator findMatchingMouseDoubleClickAction(Qt::MouseButton button, Qt::KeyboardModifiers modifiers) const;
JKQTPMouseDoubleClickActionsHashMapIterator findMatchingMouseDoubleClickAction(Qt::MouseButton button, Qt::KeyboardModifiers modifiers, bool *found=nullptr) const;
/** \brief you may overwrite this method to modify the given context menu before it is displayed.
*

View File

@ -1,4 +1,4 @@
[plot]
[plots]
widget_background_color=white
graphs\graphs_base\linewidth=1
graphs\palette=InvGray

View File

@ -1,4 +1,4 @@
[plot]
[plots]
widget_background_color=#212571
widget_background_color_for_export=#212571
plot_background_color=transparent

View File

@ -1,4 +1,4 @@
[plot]
[plots]
widget_background_color=#212121
widget_background_color_for_export=#212121
plot_background_color=transparent

View File

@ -1,4 +1,4 @@
[plot]
[plots]
max_tooltip_distance=16
useraction_catch_sensitivity=1
useraction_overlay_color=#000045
@ -85,18 +85,10 @@ axis_x\draw_mode2=line+ticks
axis_x\line_width=1.5
axis_x\axis_lines_offset=0
axis_x\min_ticks=5
axis_x\grid\enabled=true
axis_x\grid\color=gray
axis_x\grid\width=0.75
axis_x\grid\style=dash
axis_x\axis_label\distance=5
axis_x\axis_label\font_size=8
axis_x\axis_label\position=center
axis_x\axis_label\type=exponent
axis_x\minor_grid\enabled=false
axis_x\minor_grid\color=gray
axis_x\minor_grid\style=dot
axis_x\minor_grid\width=0.5
axis_x\minor_tick\labels_enabled=false
axis_x\minor_tick\inside_length=1.5
axis_x\minor_tick\label_font_size=6.4
@ -117,24 +109,24 @@ axis_x\zero_line\enabled=true
axis_x\zero_line\line_width=1.5
axis_x\zero_line\color=black
axis_x\zero_line\style=solid
axis_x\grid\enabled=true
axis_x\grid\color=gray
axis_x\grid\width=0.75
axis_x\grid\style=dash
axis_x\minor_grid\enabled=false
axis_x\minor_grid\color=gray
axis_x\minor_grid\width=0.5
axis_x\minor_grid\style=dot
axis_y\color=black
axis_y\draw_mode1=all
axis_y\draw_mode2=line+ticks
axis_y\line_width=1.5
axis_y\axis_lines_offset=0
axis_y\min_ticks=5
axis_y\grid\enabled=true
axis_y\grid\color=gray
axis_y\grid\width=0.75
axis_y\grid\style=dash
axis_y\axis_label\distance=5
axis_y\axis_label\font_size=8
axis_y\axis_label\position=center
axis_y\axis_label\type=exponent
axis_y\minor_grid\enabled=false
axis_y\minor_grid\color=gray
axis_y\minor_grid\style=dot
axis_y\minor_grid\width=0.5
axis_y\minor_tick\labels_enabled=false
axis_y\minor_tick\inside_length=1.5
axis_y\minor_tick\label_font_size=6.4
@ -155,24 +147,24 @@ axis_y\zero_line\enabled=true
axis_y\zero_line\line_width=1.5
axis_y\zero_line\color=black
axis_y\zero_line\style=solid
axis_y\grid\enabled=true
axis_y\grid\color=gray
axis_y\grid\width=0.75
axis_y\grid\style=dash
axis_y\minor_grid\enabled=false
axis_y\minor_grid\color=gray
axis_y\minor_grid\width=0.5
axis_y\minor_grid\style=dot
axis_colorbar_right\color=black
axis_colorbar_right\draw_mode1=all
axis_colorbar_right\draw_mode2=line+ticks
axis_colorbar_right\line_width=1.5
axis_colorbar_right\axis_lines_offset=0
axis_colorbar_right\min_ticks=5
axis_colorbar_right\grid\enabled=true
axis_colorbar_right\grid\color=gray
axis_colorbar_right\grid\width=0.75
axis_colorbar_right\grid\style=dash
axis_colorbar_right\axis_label\distance=5
axis_colorbar_right\axis_label\font_size=8
axis_colorbar_right\axis_label\position=center
axis_colorbar_right\axis_label\type=exponent
axis_colorbar_right\minor_grid\enabled=false
axis_colorbar_right\minor_grid\color=gray
axis_colorbar_right\minor_grid\style=dot
axis_colorbar_right\minor_grid\width=0.5
axis_colorbar_right\minor_tick\labels_enabled=false
axis_colorbar_right\minor_tick\inside_length=1.5
axis_colorbar_right\minor_tick\label_font_size=6.4
@ -193,24 +185,24 @@ axis_colorbar_right\zero_line\enabled=true
axis_colorbar_right\zero_line\line_width=1.5
axis_colorbar_right\zero_line\color=black
axis_colorbar_right\zero_line\style=solid
axis_colorbar_right\grid\enabled=true
axis_colorbar_right\grid\color=gray
axis_colorbar_right\grid\width=0.75
axis_colorbar_right\grid\style=dash
axis_colorbar_right\minor_grid\enabled=false
axis_colorbar_right\minor_grid\color=gray
axis_colorbar_right\minor_grid\width=0.5
axis_colorbar_right\minor_grid\style=dot
axis_colorbar_top\color=black
axis_colorbar_top\draw_mode1=all
axis_colorbar_top\draw_mode2=line+ticks
axis_colorbar_top\line_width=1.5
axis_colorbar_top\axis_lines_offset=0
axis_colorbar_top\min_ticks=5
axis_colorbar_top\grid\enabled=true
axis_colorbar_top\grid\color=gray
axis_colorbar_top\grid\width=0.75
axis_colorbar_top\grid\style=dash
axis_colorbar_top\axis_label\distance=5
axis_colorbar_top\axis_label\font_size=8
axis_colorbar_top\axis_label\position=center
axis_colorbar_top\axis_label\type=exponent
axis_colorbar_top\minor_grid\enabled=false
axis_colorbar_top\minor_grid\color=gray
axis_colorbar_top\minor_grid\style=dot
axis_colorbar_top\minor_grid\width=0.5
axis_colorbar_top\minor_tick\labels_enabled=false
axis_colorbar_top\minor_tick\inside_length=1.5
axis_colorbar_top\minor_tick\label_font_size=6.4
@ -231,6 +223,14 @@ axis_colorbar_top\zero_line\enabled=true
axis_colorbar_top\zero_line\line_width=1.5
axis_colorbar_top\zero_line\color=black
axis_colorbar_top\zero_line\style=solid
axis_colorbar_top\grid\enabled=true
axis_colorbar_top\grid\color=gray
axis_colorbar_top\grid\width=0.75
axis_colorbar_top\grid\style=dash
axis_colorbar_top\minor_grid\enabled=false
axis_colorbar_top\minor_grid\color=gray
axis_colorbar_top\minor_grid\width=0.5
axis_colorbar_top\minor_grid\style=dot
graphs\antialiase=true
graphs\palette=Matlab
graphs\auto_styles\color0=red

View File

@ -1,4 +1,4 @@
[plot]
[plots]
widget_background_color=white
plot_frame_width=1
plot_frame_rounded=3

View File

@ -1,4 +1,4 @@
[plot]
[plots]
widget_background_color=white
plot_frame_visible=true
plot_frame_width=1

View File

@ -1,4 +1,4 @@
[plot]
[plots]
widget_background_color=white
axis_x\draw_mode1=ticks+labels+axislabel
axis_x\draw_mode2=none