mirror of
https://github.com/jkriege2/JKQtPlotter.git
synced 2024-12-25 01:51:49 +08:00
Merge branch 'master' into add_qt6_compatibility
This commit is contained in:
commit
6bcb0b9a9f
44
CONTRIBUTING.md
Normal file
44
CONTRIBUTING.md
Normal 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.
|
||||
|
@ -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
11
SECURITY.md
Normal 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.
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1305,17 +1305,17 @@ JKQTPMathParser::jkmpNode* JKQTPMathParser::primary(bool get){
|
||||
jkmpError(jkqtp_format("')' or ',' expected, but '%s' found", currenttokentostring().c_str()));
|
||||
}
|
||||
|
||||
if ( CurrentToken != RBRACKET ) jkmpError(jkqtp_format("')' expected, but '%s' found", currenttokentostring().c_str()));;
|
||||
JKQTPMathParser::jkmpNode** p=nullptr;
|
||||
if ( CurrentToken != RBRACKET ) jkmpError(jkqtp_format("')' expected, but '%s' found", currenttokentostring().c_str()));;
|
||||
JKQTPMathParser::jkmpNode** p=nullptr;
|
||||
if (num>0) {
|
||||
p=static_cast<JKQTPMathParser::jkmpNode**>(malloc(sizeof(JKQTPMathParser::jkmpNode*) * num));
|
||||
for (int i=0; i<num; i++) {
|
||||
p[i]=params[i];
|
||||
}
|
||||
}
|
||||
res=new jkmpFunctionNode(varname, p, num, this, nullptr);
|
||||
free(params);
|
||||
getToken();
|
||||
res=new jkmpFunctionNode(varname, p, num, this, nullptr);
|
||||
free(params);
|
||||
getToken();
|
||||
|
||||
} else {
|
||||
res=new jkmpVariableNode(varname, this, nullptr);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
*
|
||||
|
@ -1,4 +1,4 @@
|
||||
[plot]
|
||||
[plots]
|
||||
widget_background_color=white
|
||||
graphs\graphs_base\linewidth=1
|
||||
graphs\palette=InvGray
|
||||
|
@ -1,4 +1,4 @@
|
||||
[plot]
|
||||
[plots]
|
||||
widget_background_color=#212571
|
||||
widget_background_color_for_export=#212571
|
||||
plot_background_color=transparent
|
||||
|
@ -1,4 +1,4 @@
|
||||
[plot]
|
||||
[plots]
|
||||
widget_background_color=#212121
|
||||
widget_background_color_for_export=#212121
|
||||
plot_background_color=transparent
|
||||
|
@ -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
|
||||
|
@ -1,4 +1,4 @@
|
||||
[plot]
|
||||
[plots]
|
||||
widget_background_color=white
|
||||
plot_frame_width=1
|
||||
plot_frame_rounded=3
|
||||
|
@ -1,4 +1,4 @@
|
||||
[plot]
|
||||
[plots]
|
||||
widget_background_color=white
|
||||
plot_frame_visible=true
|
||||
plot_frame_width=1
|
||||
|
@ -1,4 +1,4 @@
|
||||
[plot]
|
||||
[plots]
|
||||
widget_background_color=white
|
||||
axis_x\draw_mode1=ticks+labels+axislabel
|
||||
axis_x\draw_mode2=none
|
||||
|
Loading…
Reference in New Issue
Block a user