pgfplots.pdf - Manual for Package pgfplots 2D/3D Plots in...

This preview shows page 1 out of 571 pages.

Unformatted text preview: Manual for Package pgfplots 2D/3D Plots in LATEX, Version 1.17 Dr. Christian Feuersänger [email protected] Revision 1.17 (2020/02/29) Abstract pgfplots draws high-quality function plots in normal or logarithmic scaling with a user-friendly interface directly in TEX. The user supplies axis labels, legend entries and the plot coordinates for one or more plots and pgfplots applies axis scaling, computes any logarithms and axis ticks and draws the plots. It supports line plots, scatter plots, piecewise constant plots, bar plots, area plots, mesh and surface plots, patch plots, contour plots, quiver plots, histogram plots, box plots, polar axes, ternary diagrams, smith charts and some more. It is based on Till Tantau’s package pgf/TikZ. Contents 1 Introduction 7 2 About PGFPlots: Preliminaries 2.1 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Upgrade remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 New Optional Features . . . . . . . . . . . . . . . . . . . . 2.2.2 Old Features Which May Need Attention . . . . . . . . . 2.3 The Team . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Installation and Prerequisites . . . . . . . . . . . . . . . . . . . . 2.5.1 Licensing . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.2 Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.3 Installation in Windows . . . . . . . . . . . . . . . . . . . 2.5.4 Installation of Linux Packages . . . . . . . . . . . . . . . 2.5.5 Installation in Any Directory – the TEXINPUTS Variable . 2.5.6 Installation Into a Local TDS Compliant texmf-Directory 2.5.7 Installation If Everything Else Fails… . . . . . . . . . . . . 2.6 Troubleshooting – Error Messages . . . . . . . . . . . . . . . . . 2.6.1 Problems with available Dimen registers . . . . . . . . . . 2.6.2 Dimension Too Large Errors . . . . . . . . . . . . . . . . 2.6.3 Restrictions for DVI Viewers and dvipdfm . . . . . . . . . 2.6.4 Problems with TEX’s Memory Capacities . . . . . . . . . 2.6.5 Problems with Language Settings and Active Characters . 2.6.6 Other Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8 10 11 11 12 12 12 12 13 13 13 13 14 14 14 14 15 15 15 3 Step-by-Step Tutorials 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Solving a Real Use Case: Function Visualization . . . . . . . . . . . . . . . . 3.2.1 Getting the Data Into TEX . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Fine-Tuning of the First Picture . . . . . . . . . . . . . . . . . . . . . 3.2.3 Adding the Second Picture with a Different Plot . . . . . . . . . . . . 3.2.4 Fixing the Vertical Alignment and Adjusting Tick Label Positions . . 3.2.5 Satisfying Different Tastes . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.6 Finishing Touches: Automatic Generation of Individual Pdf Graphics 3.2.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Solving a Real Use Case: Scientific Data Analysis . . . . . . . . . . . . . . . . 3.3.1 Getting the Data into TEX . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Adding the Remaining Data Files of Our Example. . . . . . . . . . . . 3.3.3 Add a Legend and a Grid . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4 Add a Selected Fit-line . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.5 Add an Annotation using TikZ: a Slope Triangle . . . . . . . . . . . . 3.3.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Use Cases involving Scatter Plots . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Scatter Plot Use Case A . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Scatter Plot Use Case B . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3 Scatter Plot Use Case C . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 16 16 17 18 19 21 22 23 24 24 25 25 26 26 27 29 29 29 32 33 33 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CONTENTS 3.5 4 The 4.1 4.2 4.3 4.4 4.5 4.6 Solving a Real Use Case: Functions of Two Variables . . 3.5.1 Surface Plot from Data File . . . . . . . . . . . . 3.5.2 Fine-Tuning . . . . . . . . . . . . . . . . . . . . . 3.5.3 Adding Scattered Data on Top of the Surface . . 3.5.4 Computing a Contour Plot of a Math Expression 3.5.5 Summary . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 34 35 35 36 38 Reference TEX dialects: LATEX, ConTEXt, plain TEX . . . . . . . . . . . . . . . . . . The Axis Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . The \addplot Command: Coordinate Input . . . . . . . . . . . . . . . . . 4.3.1 Coordinate Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Reading Coordinates From Tables . . . . . . . . . . . . . . . . . . 4.3.3 Computing Coordinates with Mathematical Expressions . . . . . . 4.3.4 Mathematical Expressions And File Data . . . . . . . . . . . . . . 4.3.5 Computing Coordinates with Mathematical Expressions (gnuplot) 4.3.6 Computing Coordinates with External Programs (shell) . . . . . . 4.3.7 Using External Graphics as Plot Sources . . . . . . . . . . . . . . . 4.3.8 Keys To Configure Plot Graphics . . . . . . . . . . . . . . . . . . . 4.3.9 Reading Coordinates From Files . . . . . . . . . . . . . . . . . . . About Options: Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 PGFPlots and TikZ Options . . . . . . . . . . . . . . . . . . . . Two Dimensional Plot Types . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.1 Linear Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.2 Smooth Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.3 Constant Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.4 Bar Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.5 Histograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.6 Box Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.7 Comb Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.8 Quiver Plots (Arrows) . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.9 Stacked Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.10 Area Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.11 Closing Plots (Filling the Area Under Plots) . . . . . . . . . . . . 4.5.12 Scatter Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.13 1D Colored Mesh Plots . . . . . . . . . . . . . . . . . . . . . . . . 4.5.14 Interrupted Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.15 Patch Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.16 Image (Matrix) Plots . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.17 Polar Coordinates / Polar Axes . . . . . . . . . . . . . . . . . . . . 4.5.18 Tieline Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.19 Smith Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Three Dimensional Plot Types . . . . . . . . . . . . . . . . . . . . . . . . 4.6.1 Before You Start With 3D . . . . . . . . . . . . . . . . . . . . . . . 4.6.2 The \addplot3 Command: Three Dimensional Coordinate Input . 4.6.3 Line Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4 Scatter Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.5 Mesh Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.6 Surface Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.7 Surface Plots with Explicit Color . . . . . . . . . . . . . . . . . . . 4.6.8 Contour Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.9 Filled Contour Plots . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.10 Parameterized Plots . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.11 3D Quiver Plots (Arrows) . . . . . . . . . . . . . . . . . . . . . . . 4.6.12 Image (Matrix) Plots . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.13 Patch Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.14 About 3D Const Plots and 3D Bar Plots . . . . . . . . . . . . . . . 4.6.15 Mesh/Surface Plots with Holes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 39 40 41 46 47 53 57 59 61 62 65 73 74 77 77 77 78 78 81 89 89 89 90 94 99 105 107 119 120 123 123 123 124 124 124 124 124 129 132 134 137 144 151 162 170 171 171 176 183 183 4 CONTENTS 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 Markers, Linestyles, (Background) Colors and Colormaps . 4.7.1 Markers . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.2 Line Styles . . . . . . . . . . . . . . . . . . . . . . . 4.7.3 Edges and Their Parameters . . . . . . . . . . . . . 4.7.4 Font Size and Line Width . . . . . . . . . . . . . . . 4.7.5 Colors . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.6 Color Maps . . . . . . . . . . . . . . . . . . . . . . . 4.7.7 Cycle Lists – Options Controlling Line Styles . . . . 4.7.8 Axis Background . . . . . . . . . . . . . . . . . . . . Providing Color Data – Point Meta . . . . . . . . . . . . . . 4.8.1 Point Meta Overview . . . . . . . . . . . . . . . . . 4.8.2 User Input Format for Point Meta . . . . . . . . . . 4.8.3 Mapping Point Meta and Color Maps . . . . . . . . Axis Descriptions . . . . . . . . . . . . . . . . . . . . . . . . 4.9.1 Placement of Axis Descriptions . . . . . . . . . . . . 4.9.2 Alignment of Axis Descriptions . . . . . . . . . . . . 4.9.3 Labels . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9.4 Legends . . . . . . . . . . . . . . . . . . . . . . . . . 4.9.5 Legend Appearance . . . . . . . . . . . . . . . . . . 4.9.6 Legends with \label and \ref . . . . . . . . . . . . 4.9.7 Legends Outside Of an Axis . . . . . . . . . . . . . . 4.9.8 Legends with Customized Texts or Multiple Lines . 4.9.9 Axis Lines . . . . . . . . . . . . . . . . . . . . . . . . 4.9.10 Moving Axis Lines . . . . . . . . . . . . . . . . . . . 4.9.11 Two Ordinates . . . . . . . . . . . . . . . . . . . . . 4.9.12 Axis Discontinuities . . . . . . . . . . . . . . . . . . 4.9.13 Color Bars . . . . . . . . . . . . . . . . . . . . . . . 4.9.14 Color Bars Outside Of an Axis . . . . . . . . . . . . 4.9.15 Tick Labels . . . . . . . . . . . . . . . . . . . . . . . Scaling Options . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.1 Common Scaling Options . . . . . . . . . . . . . . . 4.10.2 Scaling Descriptions: Predefined Styles . . . . . . . . 4.10.3 Scaling Strategies . . . . . . . . . . . . . . . . . . . . 3D Axis Configuration . . . . . . . . . . . . . . . . . . . . . 4.11.1 View Configuration . . . . . . . . . . . . . . . . . . . 4.11.2 Styles Used Only For 3D Axes . . . . . . . . . . . . 4.11.3 Appearance Of The 3D Box . . . . . . . . . . . . . . 4.11.4 Axis Line Variants . . . . . . . . . . . . . . . . . . . Error Bars . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.12.1 Input Formats of Error Coordinates . . . . . . . . . Number Formatting Options . . . . . . . . . . . . . . . . . 4.13.1 Frequently Used Number Printing Settings . . . . . 4.13.2 PGFPlots-specific Number Formatting . . . . . . . . Specifying the Plotted Range . . . . . . . . . . . . . . . . . 4.14.1 Configuration of Limits Ranges . . . . . . . . . . . . 4.14.2 Accessing Computed Limit Ranges . . . . . . . . . . Tick Options . . . . . . . . . . . . . . . . . . . . . . . . . . 4.15.1 Tick Coordinates and Label Texts . . . . . . . . . . 4.15.2 Tick Alignment: Positions and Shifts . . . . . . . . . 4.15.3 Tick Scaling – Common Factors In Ticks . . . . . . 4.15.4 Tick Fine-Tuning . . . . . . . . . . . . . . . . . . . . Grid Options . . . . . . . . . . . . . . . . . . . . . . . . . . Custom Annotations . . . . . . . . . . . . . . . . . . . . . . 4.17.1 Accessing Axis Coordinates in Graphical Elements . 4.17.2 Changing the Appearance of Individual Coordinates 4.17.3 Placing Nodes on Coordinates of a Plot . . . . . . . 4.17.4 Placing Decorations on Top of a Plot . . . . . . . . . Style Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 183 188 189 190 191 193 214 230 231 231 232 235 240 240 246 251 254 257 266 267 269 270 275 277 278 280 291 292 292 293 304 307 309 309 312 312 315 316 320 322 322 323 327 327 333 334 334 345 347 350 353 353 354 358 358 363 364 CONTENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 371 372 372 375 376 377 381 381 381 384 385 386 388 390 396 399 399 402 408 410 410 411 414 414 5 Related Libraries 5.1 Clickable Plots . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.2 Requirements for the Library . . . . . . . . . . . . . . 5.1.3 Customization . . . . . . . . . . . . . . . . . . . . . . 5.1.4 Using the Clickable Library in Other Contexts . . . . 5.2 ColorBrewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Sequential Schemes . . . . . . . . . . . . . . . . . . . . 5.2.3 Diverging Schemes . . . . . . . . . . . . . . . . . . . . 5.2.4 Qualitative Schemes . . . . . . . . . . . . . . . . . . . 5.2.5 Interaction with the ColorBrewer website . . . . . . . 5.2.6 External Examples . . . . . . . . . . . . . . . . . . . . 5.3 Colormaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Dates as Input Coordinates . . . . . . . . . . . . . . . . . . . 5.5 Decoration: Soft Clipping . . . . . . . . . . . . . . . . . . . . 5.6 Image Externalization . . . . . . . . . . . . . . . . . . . . . . 5.7 Fill between . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.1 Filling an Area . . . . . . . . . . . . . . . . . . . . . . 5.7.2 Filling Different Segments of the Area . . . . . . . . . 5.7.3 Filling only Parts Under a Plot (Clipping) . . . . . . . 5.7.4 Styles Around Fill Between . . . . . . . . . . . . . . . 5.7.5 Key Reference . . . . . . . . . . . . . . . . . . . . . . 5.7.6 Intersection Segment Recombination . . . . . . . . . . 5.7.7 Basic Level Reference . . . . . . . . . . . . . . . . . . 5.7.8 Pitfalls and Limitations . . . . . . . . . . . . . . . . . 5.8 Grouping plots . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8.1 Grouping options . . . . . . . . . . . . . . . . . . . . . 5.9 Patchplots Library . . . . . . . . . . . . . . . . . . . . . . . . ...
View Full Document

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture