From 2724b007aaed2e1119d3d8c2bee1f7c51ae41e56 Mon Sep 17 00:00:00 2001 From: jkriege2 Date: Thu, 29 Nov 2018 22:48:31 +0100 Subject: [PATCH] added example for log axes --- README.md | 3 +- .../jkqtplotter_simpletest_logaxes.png | Bin 0 -> 31453 bytes .../jkqtplotter_simpletest_logaxes_nolog.png | Bin 0 -> 23716 bytes .../jkqtplotter_simpletest_logaxes_small.png | Bin 0 -> 13909 bytes test/jkqtplotter_simpletest_logaxes/README.md | 69 +++++++++++++++ .../jkqtplotter_simpletest_logaxes.cpp | 81 ++++++++++++++++++ .../jkqtplotter_simpletest_logaxes.pro | 20 +++++ 7 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 screenshots/jkqtplotter_simpletest_logaxes.png create mode 100644 screenshots/jkqtplotter_simpletest_logaxes_nolog.png create mode 100644 screenshots/jkqtplotter_simpletest_logaxes_small.png create mode 100644 test/jkqtplotter_simpletest_logaxes/README.md create mode 100644 test/jkqtplotter_simpletest_logaxes/jkqtplotter_simpletest_logaxes.cpp create mode 100644 test/jkqtplotter_simpletest_logaxes/jkqtplotter_simpletest_logaxes.pro diff --git a/README.md b/README.md index b90985f0ec..d01dfcd08f 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,8 @@ All test-projects are Qt-projects that use qmake to build. You can load them int | Screenshot | Description | Notes | |:-------------:| ------------- | ------------- | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest1_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest) | [Very Basic Example (Line Graph)](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest) | `JKQTPxyLineGraph`
C-style arrays of data | -| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_symbols_and_styles_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_symbols_and_styles) | [Line Graph with Different Symbols and Line Styles](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_symbols_and_styles) | `JKQTPxyLineGraph`
C++ vector of data | +| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_symbols_and_styles_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_symbols_and_styles) | [Line Graph with Different Symbols and Line Styles](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_symbols_and_styles) | `JKQTPxyLineGraph`
C++ vector of data
setting line styles and symbol styles
automatic graph coloring | +| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_logaxes_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_logaxes) | [logarithmic axes](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_logaxes) | `JKQTPxyLineGraph` and `JKQTPgeoText`
C++ vector of data
logarithmic axes
plot line styles
internal LaTeX parser
add commenting text to a graph | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_symbols_and_errors_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_symbols_and_errors) | [Simple Line/Symbol Graph With Errorbars](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_symbols_and_errors) | `JKQTPxyLineErrorGraph`
C-style arrays of data | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_barchart_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_barchart) | [Simple Bar Charts](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_barchart) | `JKQTPbarVerticalGraph`
C-style arrays of data | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/JKQTPbarVerticalGraphStacked_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_stackedbars) | [Stacked Bar Charts](https://github.com/jkriege2/JKQtPlotter/tree/master/test/jkqtplotter_simpletest_stackedbars) | `JKQTPbarVerticalStackableGraph`, `JKQTPbarHorizontalStackableGraph`
C++-style vectors of data | diff --git a/screenshots/jkqtplotter_simpletest_logaxes.png b/screenshots/jkqtplotter_simpletest_logaxes.png new file mode 100644 index 0000000000000000000000000000000000000000..3b14801aa28489af1a980ac6a4bb76111b99825d GIT binary patch literal 31453 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 Td%v*(EoAU?^>bP0l+XkKjitME literal 0 HcmV?d00001 diff --git a/screenshots/jkqtplotter_simpletest_logaxes_small.png b/screenshots/jkqtplotter_simpletest_logaxes_small.png new file mode 100644 index 0000000000000000000000000000000000000000..4281d08a181666c246847ef4712d096358ac5a25 GIT binary patch literal 13909 zcmV-bHmb>qP)f6Xi@@54ZTQ_E-Enz5K6$1 z03tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUFWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il z#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|>%+C|c55>;RS}qbKr-&IQ zTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bf ze_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l90Z_aBhs|Iw0E)7{bq;-T z9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g z$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL1(`yIK=_}U_z%PWq}jQa ziQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{wo%_#%{(V=tO#a9gB!7-$ zM?^BX5>d|Vn*3S!?g~$*UQipUP zL&zMmg;!4Do9IA%up=Rh?=qPj=x&RGBx1dpI68aT- z2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3O zju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvDRIYI4MQ`g1<+DyrL=EogS06Xii({|v`U^zjmmKqDIK93(F5q| z^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6bsWa4l)YH_rsduU0(?DsM zX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5oYvCT^3%%Fs?s{6^;Da# z?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR{dFa}^}2()GkV5)QF?`X z?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJuZ@h2VvIHzbs0S}Rx=JT z&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lghs_<#1?IcWhb_<+P8LFo z28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wuZrx~o$A)4PXj5p@WAm%6 znJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVPgQJ7Uq0M2^(ZDg$vDWbh zi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%562@eae34a)26HyS+zks@6 z$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWkUW(I*6U24LW8oFzvR(TOpMEs5_rp_~TJ^wNN(wM(bC zZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f)7E}wKr~0SXrM^xJP1~RL zDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N5;bK**^9Ef#WdN^)PTf9 zvR*Qp{o-l7TcBI8wqSIn=gRt3(5j`Y zdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7we(PI{6^cd0H#WFzsN0Cz zDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8%%N=0R?Jr6*6Z8cw;d=~ zF3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~E ze(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H9s-9XhaP{M`0e$>L5F*f zu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe@An_mJyvsE<#^c%!il02 zpHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf_v}A;-u3*k3(gmgUSwVD zy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+fub#UWaP88_{E^}7QP*$Y zNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw%>L5Kn>ODH}V8MesW8ASP zKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j|6Kdbc>FRj6+1Ql zT=e|YubW?}zu5oM?q%0=plLL~tM1TAeNyjTaOa0O>m10x_*7+q+kB#o6hC(rOb4&MpS+1vVWzh=blStq#RVC>+6*augQn zH1`v;_Y6Q7tJMM~35P%`!Duk)^tymA04A|J3V>&m5P*=3MB|R4ilE;gi9~I7+tSh! zA6zgQ^uegkwWc!Y4}gAJ4X4v^9O{FCw8kY!QxoCsRx=+9O}i%-10kb^_b&M@R_nAo zjtUEli{M6Je|~!6#?q3buw-*Z<;=v;)V!CE@n{EZ6%2-rWh(GgZ&*`XuhWGgH^F(B(~AopNKUJ>41Y#+Ivp<edmlhYI`VE^l$9Ud5 zJ2~TxG`DqNcn~SkXdKeSYBGv4_K$!O!919$c6-4RACD2@u-XX^tpb+P@^Rj3D~Oj= zL&BOYRw8N~j+W;Q27}#MiRuos1%GmaC}}w%4!$9%sWX`^l{L)LfP4mdToA7suEbeP zwVl{6eshJ6WOW4@UFax)T*k9ygI2H=J6&i{AgNl7FDU_ofy}sFTwrU^8I0gL5td7$ zqkD(N`wC8{1G3RzHQVi0{3(b=fKXIqhnx%JzQts-R$|^S-!HU-6yZq3Vm8?}O-)S}i$%5ojW7tZ14Gwyb8|B@ zGwto|vRxAv0Ljob+Pre*N^xsD=Tt?YEhE4=Z>8(X$)DJm*TFMyFREG%I1m6esH zj~rc(kB{HDaby4f{h36_&6_vTwbWNKSK(!U^PAsPS64SQG^Eb}6doHJTU=b+uwg^` zd!cI#?7jEiJ9_jex^8W4-MV!P35z3CMncT53l}b69(8wjJDpBoYR{fMvL!>I5Z(l% z$<)-u#KeIE2QU?6pU%(EV=`K;R@tZS>1hmQ@7}$#Pk|jUN_lyCrmm-^ruOaIhw;lk z_4$0jU}0gQ?9=PlujBPIy*1$W?b{U<73})z)vK6o$+D!TrUp|7)B-sL=221duxkhg z%p3g47*U{s&_v9Vx7lnE9=HYx`}_NM?0A3>8gI)qluQ6BHa0f4w6uWF&;c$om4u+n z($3eu_BG6OrM)v~E-Bd@kJ~bLogKdXL3tbLH0Ct3?0I6UW z)Ya92_81b>2l&|I@dN?^sJ-6aUI;3VLUVI71RJObDFQG9yW@Y44J=dZz zd3Nq32M(m%E-Ea9Q3_@#C@2Vr!=PVfWhL}C>{YMV`-x9{0>p!K1)G9Ykhk~~B$UR? zRtlxo6q9hZK(%Kk0!ZldsqUJ&4f#}8P+E*Er%o3T0B#Aph8Bc`#06Ll>;={Yg&Y)c zlNq<{Iuoo+LUGkNF$kTw+NjOs_b38pXsN6m2*Bjcr)$-9l~$Kau@EN#I1dDaI7MqP zZ9pXGJSznvzFz>egy{=jgi(`HopGTiv7){LF;Em{G*m8BC@>DDhTntMF^QOiDJs>3 z>yv&V|5k~ouqhZ7l~&Zk7!HMGyOu4Va>0Cm=GZB!NT~22qJWI%QV|e}g@Qs*uhsJc zALru+t--7}!&-rp4#N<}Dv)sL(j}M|aP`0&AmQlfC`bsSbocJvzy9^FKl#Z|ri3`= z=H}p%xhLHkt7sUnKtfc;L_h_Q4SE%}?B&asr>CdkSAnjO<9LeUvKIrrrO*booOz6i z;ftvs43`C{a0jDg(I%;4a``M3F(#|mYY2rFmzH!IO?pQR(diXgxCa+_5$1j=tw<74 z3ql1__KKo=9w%qrXZvsUH@TXEvEVJwt#uXaKHl_khFesJ{=*nxg#wLzeSNqC$qCIT zIfx)_%0xjI;9z*1GqW=l_R^I}h=!n4?RGmzh|2JnVK3EEK=+t3c$&S1Odzf`78c5e z&{nPslEb(wE>_nyI>pE{MHR9GNClk0xX7h2r{i{3@7&k8FXcXv1{Z<}QcxN!forhG z#fulg6-SO7VS*HMV$-HgDb^G41}flpTU*<#PYmL$KthbTy1JSqGL$g&AOu+CLJBUZ z19ik>z(=EEy4C&YI#c*G6F`2-4nPXR0i`faaRDky(Mk&i*#?;yfXh#Xxj2%Q4U=U5 z9reQ$a({DC>(_DcH1CI)# zVVoNYQ-B$zN^7MLu zc?NzsbLLEaeLX}ga0^<(--j&&ZrQkTqinOwPJ!emsCa>VurEPAo{5-aU^c^|C8`>^ zXRbX)H#{uHk>CUYXYda2`@siA95V9)wkV20E5ky8%@3mnLKRHb+1csK?D#TYK+4lr z9AIl~Y?S19o}e0!FxW*BLY}XNhpM>uoQDm)wtYKEr#P4oELd4t33m{Ll%g}k!^04# zhYlTrjgx6H3-Y6?stQy$7>z^<6Sx7>-+Au-QW-~KwAXh;%X{C@RLI|)tp&C&pr8=BN+*cXqM&IyV zAf~rNK;#F>aXV!|V>%rCQMF-G^<7g?P#06>76ca|1vCW>e1##m63>F?%9Sf)V`HEM zs0EZl1xnGGn>TN=paDDw2)wOZx2E(yGBN_$3p*%Rry`|(Aq7RXWI??k4F+Lu!yX`B z@4fCiQ9ak9AmI!lgM?IxdAP(zh+8Bfq0tEiW$zs?((?pscJ6WEKUfy2Ohm3QB9GgL=!}cVRT*GjIP;=~IuyH~9QO9u7QY<89}D2O{8rJ*B&jr z^wLW}`eTnhmZ{|Q^z;vY@Pk!Zo094R7}1zH#aB6)szBT*?`D}fz#8|BQBK?Rf!jDaYw}n zQb4^Rou1}8J2l`!_=PzKXn?zKe)F3je)u7zAKeir3PZLumMQ007FbF(yM`vq9xj#^ z-z5M8WXi0}1)v}?17MCOn^d`ykV}B-?o&XeG{fv!S`tc1cpx1v)cibwQq0_iq%ijF z+XpAQzP_GNp-Si+dj0j+2L=WpRGxkI*&OF3aEIz_8KI-21FsNKl86N}0uv}xzIJvH z7m!0CkT7MaIgyYJ6f+KUN>70#h^k^J5~!)}@qlt%K>-KEm6wx=i7X_XoScM@h0(HQ zTPf88c!W{2Wy=;81OY-(j3tmU$kIPZ2!Sl|R`xUll2~()mhu-C7P`8+)M+9K;drCO zVnfb?6!d%l{r6D^BY5YXci@zil$1#8`07^enOVgqRC2{^tM({%>J+h9;yzzE804Hz z-TCvOh6X~{WzyHsfoM2bv$L}>I;6#SbQA~#V64NK1QoY$-_G1G7o7^AE<`RHAv0WA zMYP7m2Fv~f)ujzCQjb#kVrB|RVonXGGY(XCsze)5x_ z^!N8~+O)C0ZIe6+CG;iJpT+KKC{$KfVje+JV+up0uyk>flvpkuC-lw zjm5p#OGzm+>}(HACR7IrCA(C*kjf`l1b^dqLqh}W2=g9w8HQ!YoE@2%_l1Rpu*h!Q zxY5+q6phR6sX)2G!9l3pO+g(9&xHlj z-pZd3u$ZJxSJh1T zzxUpI4?g%{E>T97!kc_2pQTDE=L6J%I2Bi;=-P3`uuh6LLIIEg0=Bui8Dyxftvzw#1ULz1$Xjo{b?)3ba2^cH&d$zLr%pZe z&_j^4;MAv{dJ10lh7B7a*1rAiZ!^MocXvZ#<36gV=wOm}&Ii*z&<^M#CX!R+#XBSf zc`&m;9=r@DqwK;zc(kppZM70F6o`~#$4GtSu#>!Z>Ez?Bk5`y0wv}&lN8LZa^z+BN zp3uK>Tyzj~UO&NWrW+JcA7CJG4`w=;b^ZGFAAIn^kAC!{4?q0y(4j*E0|Wc_?xfME<13*&@RUs}35kCd6P zkQhv9vvmLTCh%xgRw@*%x(!~7_V@q8k@E6e=f1M#D}-tqt)T5F?YKUF{YM|Z^!yWl zMt=Tt^1=%_wkI1HVw(;@A;>7Urcqs8y=TuJa3L%g5D7FM8X95_<$(hSKuB=*_rL%B zmtTGvZU$kdo%8zPKHd<45|xc zz}$uH13QT2m*6IxeHN`gfBt-HYb&eEBr{vpgCD}S;Xm`tGhkL+qY6t`&#~(qfmx&& zB&51bm>W%lypZN~b#*XjWVr-#12O~#`mSBORF5OM#}!J9PF(++Z~S}V}0O( z2UbNFuDD*v_w@Yse|*RP`Oo}$*F$xdHFrH?iIfR=y5pbp&tB-+b7s$f{Q>z`-ym`; z-N~?`G|Lpjgz{rsmag;##~;^0p!|Ke+(>H3_^!D4C4L)|4CUa7qHqHFw%fA?R=*S|*e*`)M6&0zZo zy3Xhq0xz&uFJHb4YYO(5ED3QF2K1^dL(6AB1R^)z{pBy;`){oeJo3zQZ@LWfku%vv zlFv3jd8VZG|NXC*cm4anwtV9+i7{gk>)vIseKcJ|k&TUw#bl045MAUkups1kCKf~! z#S~NzLV^@Q8k?IrbN2O-3-6ZKbsYHm-*q}WveZoxq!Mf{UU%{nPyWph|MfrncmKxm z&;ODX%4fCQy9~CErfcTfYejP=&8g_<=(u|ID%0edddei_m4d+_2Fl^1T)lbb+|?7+ zQ{kZvYxX|(R}BR#E7~kemAhSA8vf9BH=*f_QVGxza8}5=$s;>^^TV9hc;Dj-9;2+KV-p0 zrJ=-e^eaEHN5g;r_5FLkV1Dw?Que#ARtB58y7@a5DI~ZBJD1 ztV@&6&(8$0SS0LQ@GeXb2FJ}KW0OAjhZf%+zKRr;Jovz8*1B4D=S(>Xgsg`N5;5o2 z@a6sAnA-O2fBa8h-1Kk%@!&JxB5NC^r}u1gnrz+t1t}we3>RuR&20*BgQT@%2|$0i zu7NE-xNBoXZXvnz8MFJ&m&nfe4K`2@}9q1_yHZN!@ zbR{$OrR&yqv^b9(E^-;Q2G9IrQK3T+cfl%-{PGFNUaZXG`trZ{#XEhkzWK^uIU71Q zJ@yx*(7_A2R?nyFkEl8eg1X&qP{Hf8o@V6{cnrCukx> zCxlTmzOb;kAdo0qdr3~z$eyvm4#{9SNbG4!#q?~31MN?aH|+dX&)<*z?U!1cc9-ot z>eX;D6rhJDWU83bBTKwss9=eQD^`^9Cz2B>fO@vV3e?opG&VMRe4Y)58y?@VmK-2b zTvPLdZ=*?zSSuFNPRNF@ETuiQID$0s%37 zVrhw7y~+&@iPs*FcrY0VX)uVV?TZQ`Te!Kc5VJ7 zmk5dF2zgp_`BazcMx)Uj^oPO2RB) zv4}r~g`}v6W5*g{B%o+0L~h>}Gb_NX5L6&!WhERK0v9x$O*MBPLZ%4n3TjFZ{&`*G zvFle({_5C&n6>L4ZhxezbvrTTn$MC?bY@l73*l6VS!XaRQ+76i!Yru^qB1#GAQ|v< zVq)UXVjG&U(#==+y-nF@LZP_X46Pt8#k2G!DKH7voS6~NS(}<7XU`G{1$2mFwYB1Q zb<6TLBBEy7o^H@*cVSqZTVemN$V!t*l(W?(P;T3LbU4 z$<3SM>iz62$f+qV)@ii>XL_AHNvOK6R2}#S7fP;Ol0_Ql%gV~&+Gn93OHfE%FLV*oK*#_gN;aJ2 zo_GO@;zv@@7#hgAupo-xD_01U#w@D_Q~)!Q?9`5x1v-cwJrMF(BYkh+N2CXj5E3Q-eDpd&|lQjMns=%`9D4+bgR#K0!8; z2H)+8k#p~z|JA8;<2&{BEj619n>uU-C3H)TdR@3G8Eh%%#^_Q?WdC*qTeSzIKEO-0 z5%Ld&d{eYVbAkL~92n>FB*R<;=QZ3}4;HN<*uC&%phscciYkK>^G`u?{D7O`;))^S ztgyybv8Jml&X1lNc;_E?Ef#7j)|ks0y4H5G)ea5H2tE@boNF)gh{u6;#^x76*k*vxAdMz7z#I(oVHjY}^V3&y>M=3q;G zT}e|>K^f7m!jiZwu(yWeAg)x1=8W>AgIJ1Gwy?++LjDgS-zVgsuF!Tqt8OcXxw8Ps zW3j}_%J@W<@A4_pki8QVVp1{K8+3)A10IEC#2iz}f`O_DMf_IIQd?AyAJR@bi7@Y- z^4%UgHFNgTxwp%_(V-gK7Hd2S9pbes-Ga_ zBq6^gcsY`p)_I-5ret4kIzSBb{GI9$q)e8wlptUj_L0XUo=gM@JUA$NqHt_*zp4sE z)o`2<3RODCPD8kof^z)SiNc2jBEBlm&DgE6{^65nu8wb+H}MWTS6jQ$+GuxG!xqx1 z-4jC+Q3dESxP}rBC??_f`1s1mX$vFw&tuBYy9gXLQgrJo#a7zvh3B z`DTxDjq?qz(&CyHM}wibRBuqQe$L+7?RJljjz%L9PIg;NcEH@W+=+W@h+cPy-tZ=8{g_Ghb3xQL?SF-P8z{CENLEEWG6Px&sR%v(qCZgYOR*=DVi# zakFuu+O^5qUF=L z@<~F%tbFPL47GzKb|YpVv2$Y_nIhbS9H}FMR{Vy$_~mXsTMLAqz=2U=O6A&P(g<1J z16*UavZkmap&X2Bc*aUAN)ijh&U#z|DJ>PKvgV|ZY%?tz2nZl;3FK}?1>1qe#L3De z1f32XIKbvCcyVB0pt`!69dx07=~YYOMRCo;8f{QZ&Ji+6$OV}2^yt7=dgx;8q@)jYN38@y9rD(pcfhNhnt3MC`GczNUIYspQ*9wo(V*(+eNb`l%fUkj4?pb<0 zM^DdvgOC6Xn&VLs{YhBxoF4XoddFZ@V$JulYj*O9Ode^D0J)m!LnewKn}6-3KhINL z;2~s*rsoV3F;OlidMQFg5K07+@f^@Ry3Vb7K6Ud?1%@KGTCJi)B+5U>Oz0+Qb_`vf zkkgxBo)yy{77hwg1|285-|DzJPL#2bw9{0H*3baZN3}w57v#AgA%6&m!*B;g^GC&b zq=a(ust8gw>xCv7D5xay?eVZLY$QhFC*(FE7ikPgLpjwzWv`wRUUyeKNP>IzsgYIh znqgi`KgdlD*4)gQWMKJivIj;hg?v&Fgb;j2L0ks0(OB|wi!?BMo36mX#63$%yNPBI zfLUj$iBw6AVJvt_`d)9T1RO6)@V+eK~T+~n|m&tPkAZr;3kGZ@JmQ6A<7 z?nXyP@jL(TROBO4a&@hA^oMQJmrjQgNTea6323x-t*BXV5^|nqjl`)91>P+qWCN`z zP|@wAVp)5qO`Y*RXRzJ6b!&KdI1-7dJexcDT!(yMRZ`Q{0Nhb~oG<4^sxX$_O@GHJ zvsO`~NlX3I%am)osSRbMf3}N@*n*Z?f<<(4aP(2m$}#_ZenL-5fp@R|qv)$;&g5g7 z=NsmZ@glWS@UEpl$&<5Hsz52ajuOmE;)`)IM#u=wo()nyo}>;>fZ9+uDaS)HTWA#8 zNK+Ry%gIDg!|6+>xq}pLP3C6BAN)Ce`t;1qjC7=#YWV0f*j5C^GF(HJ9T+0oL^`jI zBp+D{tg?e>{FG)vDuJh|G5lM4r<-Pl;prIBuGMl@PBg4WsSH>{DG;Z!+J1-9^1u-t zJ;~$JrAxiNy`TN;(`r`jX+XVURm_<@cb(s_oz`5O4KeiQma5@RYPm zgbQ-ZRan#_Mrk%6GPf9LoTF5{N>i(u8Xln%yMZ3y$#WV(14gf^s%mO#62tUS<*q#^ ze(tJ>CFHa7rd42pK|UYRgD_ZHTFUa7mh9m5dS$Yim2|Cm2y-$tBTGgywPaPlqv_`^yJBtpZe6NWS>G|K-8DB zTo*Zb_0?BD_OXv;+UDu=`C_qHCL-ajFJHd=$Rm$rYW()?+gT34KX&ZcS_-mHr>CcV zeqTc)O-*O4&b9}|MM5pKEWG}!*PpI^8fa&0f2@`=65`!Jm7boS6DLl`>ht;Y=f$Ms40gwb3m1T8*;A?^=s+Zs$%KiLZolCv`W+Y;aJgKvSv(*iUJ}w? z*7n2XJ$LRL`o&z9JrV-q0romOs4~6l@$vB+H*ORZ6lB`DaP#KPOo|4bo;`bZYHA9@ zOSk6G_}JLk;^HDOoc@#@>~vw^LS=a+x`r*HG6@k)H#Ro5wzi@_3?&c<;Ll74?y)oQ zW!r%yfpgl`)y0mGOjm5uiT~+!aUY@#sAOk{rWX(rpGlB?1inYt-~-5ESu*g6PYcL) zJx`&frGCTQXOc|dyn_c1c6N567|no+rXDGq zBd~2X7(K`{F)@JwVPvxNooySIeVHp)u7LKCNI(Q8gi==t)0rNqx|GE*k)2rV*lKhQ zaR(s*bY!ZYiOGOp^b0{PdtPhyt|5e3>do74zrAteM$xg869ckHBZ(6$CMPGEaFXVa zN)Hc{6m3D|2e3nL>VZEbBV^CP89_BNrI& zMJ=E_CLAn)6ojiMA^30q{{2cr?@Y}=C6GkIkBTr2IzLoC(6zj2TmbXU>V_eb#*oL1mp~?T&T&uzP^Tr2FOfy1_X0IU;#nz{_JNz z>+bGm<`~R$_Sp^gT}~!ufoOI z1|TPJ3f*?<)G1gBKz)0AJA6vmleh`D2RzDT7oI{7!4HAM2YU)e4M+ky!Mg?7&>&jd zx^-)BZ|{*KN8t57@x&7_TTl^ZGn!%oADj)R5O-kQqqW}=D*m345O`d_em%@NkO4?% zk`1T?a$#kFa*Wl$lq`fM&~xX2?swjK2g)1V1O06_n^6Yz20fsbZ~;#l77ChzsfqGX zIj91A6`YNdU__L}HGFpb2AM%!sM6mp5^~B8jk$jye%0N^5w67PWI9YdN|8W~!Mw7I zyb_C7RaSBuj*lnsOOs3set_style()`). The colors are set automtically from an internal default palette. The main loop looks like this: + +```c++ + QVector pens {Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine, Qt::DashDotDotLine }; + for (int id=0; id Y; + for (auto& xx: X) { + Y<<1.0/sqrt(sqr(1-sqr(xx))+sqr(2*xx*D[id])); + } + + JKQTPxyLineGraph* graph=new JKQTPxyLineGraph(&plot); + + // copy data into datastore and immediately set the yColumn + graph->set_xColumn(columnX); + graph->set_yColumn(ds->addCopiedColumn(Y, "y"+QString::number(id))); + + // don't use symbols + graph->set_symbol(JKQTPnoSymbol); + // use one of different pens + graph->set_style(pens[id%pens.size()]); + // set width of graph line + graph->set_lineWidth(1.5); + + // graph title is made from symbol+penstyle + graph->set_title(QString("D=\\delta/\\omega_0=%1").arg(D[id])); + + // add the graph to the plot, so it is actually displayed + plot.addGraph(graph); + } +``` + +Then a `JKQTPgeoText` is added to the graph, which shows the function plotted in the plot: +```c++ + // 4. Also we add a text-element in the plot to show the plotted function + // This element (JKQTPgeoText) is taken from the set of geometric elements + // and is simply parametrized by a position (1.8/10) and the text to display. + // In addition you can also set the font size (here to 15) + plot.addGraph(new JKQTPgeoText(&plot, 1.8, 10, "\\frac{A}{A_{stat}}=\\frac{1}{\\sqrt{\\left(1-\\eta^2\\right)^2+\\left(2{\\eta}D\\right)^2}}", 15)); + // for nicer rendering we set the fonts used by the internal LaTeX parser instance to XITS + plot.get_plotter()->get_mathText()->useXITS(); +``` + +Finally the y-axis is switched to logarithmic scaling and the axis labels are set: +```c++ + // 4. set y-axis to logarithmic (x-axis would be analogous) + // and set axis labels (using LaTeX notation) + plot.get_yAxis()->set_logAxis(true); + plot.get_yAxis()->set_axisLabel("Amplitude A/A_{stat}"); + plot.get_xAxis()->set_axisLabel("relative driving frequency \\eta=\\omega/\\omega_0"); +``` + +The result looks like this: + +![jkqtplotter_simpletest_symbols_and_styles](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_logaxes.png) + +Without the logarithmic scaling we would have: + +![jkqtplotter_simpletest_symbols_and_styles](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_logaxes_nolog.png) + + +[Back to JKQTPlotter main page](https://github.com/jkriege2/JKQtPlotter/) \ No newline at end of file diff --git a/test/jkqtplotter_simpletest_logaxes/jkqtplotter_simpletest_logaxes.cpp b/test/jkqtplotter_simpletest_logaxes/jkqtplotter_simpletest_logaxes.cpp new file mode 100644 index 0000000000..e88c6b41a5 --- /dev/null +++ b/test/jkqtplotter_simpletest_logaxes/jkqtplotter_simpletest_logaxes.cpp @@ -0,0 +1,81 @@ +#include +#include "jkqtplotter/jkqtplotter.h" +#include "jkqtplotter/jkqtpgeoelements.h" +#include "jkqtplottertools/jkqtptools.h" + +#define sqr(x) ((x)*(x)) + +int main(int argc, char* argv[]) +{ + QApplication app(argc, argv); + + // 1. create a plotter window and get a pointer to the internal datastore (for convenience) + JKQtPlotter plot; + JKQTPdatastore* ds=plot.getDatastore(); + + // 2. now we create data a vector of x-values for a simple plot (resonance curve with different damping value D) + // see https://en.wikipedia.org/wiki/Resonance + QVector X; + QVector D { 0.001, 0.1, 1, 10}; + const int Ndata=500; // number of plot points in each curve + for (int i=0; iaddCopiedColumn(X, "x"); + + // 3. now we make several plots for different values of D + QVector pens {Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine, Qt::DashDotDotLine }; + for (int id=0; id Y; + for (auto& xx: X) { + Y<<1.0/sqrt(sqr(1-sqr(xx))+sqr(2*xx*D[id])); + } + + JKQTPxyLineGraph* graph=new JKQTPxyLineGraph(&plot); + + // copy data into datastore and immediately set the yColumn + graph->set_xColumn(columnX); + graph->set_yColumn(ds->addCopiedColumn(Y, "y"+QString::number(id))); + + // don't use symbols + graph->set_symbol(JKQTPnoSymbol); + // use one of different pens + graph->set_style(pens[id%pens.size()]); + // set width of graph line + graph->set_lineWidth(1.5); + + // graph title is made from symbol+penstyle + graph->set_title(QString("D=\\delta/\\omega_0=%1").arg(D[id])); + + // add the graph to the plot, so it is actually displayed + plot.addGraph(graph); + } + + // 4. Also we add a text-element in the plot to show the plotted function + // This element (JKQTPgeoText) is taken from the set of geometric elements + // and is simply parametrized by a position (1.25/10) and the text to display. + // In addition you can also set the font size (here to 15) + plot.addGraph(new JKQTPgeoText(&plot, 1.25, 10, "\\frac{A}{A_{stat}}=\\frac{1}{\\sqrt{\\left(1-\\eta^2\\right)^2+\\left(2{\\eta}D\\right)^2}}", 15)); + // for nicer rendering we set the fonts used by the internal LaTeX parser instance to XITS + //plot.get_plotter()->get_mathText()->useXITS(); + + // 4. set y-axis to logarithmic (x-axis would be analogous) + // and set axis labels (using LaTeX notation) + plot.get_yAxis()->set_logAxis(true); + plot.get_yAxis()->set_axisLabel("Amplitude A/A_{stat}"); + plot.get_xAxis()->set_axisLabel("relative driving frequency \\eta=\\omega/\\omega_0"); + + + // 5. autoscale the plot so the graph is contained + plot.zoomToFit(); + + // 6. show plotter and make it a decent size + plot.show(); + plot.resize(600,400); + + return app.exec(); +} diff --git a/test/jkqtplotter_simpletest_logaxes/jkqtplotter_simpletest_logaxes.pro b/test/jkqtplotter_simpletest_logaxes/jkqtplotter_simpletest_logaxes.pro new file mode 100644 index 0000000000..4a8d1d6083 --- /dev/null +++ b/test/jkqtplotter_simpletest_logaxes/jkqtplotter_simpletest_logaxes.pro @@ -0,0 +1,20 @@ +# source code for this simple demo +SOURCES = jkqtplotter_simpletest_logaxes.cpp + +# configure Qt +CONFIG += qt +QT += core gui svg +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport + +# output executable name +TARGET = jkqtplotter_simpletest_logaxes + +# include JKQtPlotter source code +include(../../lib/jkqtplotter.pri) +include(../../lib/jkqtplotterressources/math_fonts/xits.pri) +DEFINES += AUTOLOAD_XITS_FONTS +DEFINES += USE_XITS_FONTS + +# here you can activate some debug options +#DEFINES += SHOW_JKQTPLOTTER_DEBUG +#DEFINES += JKQTBP_AUTOTIMER