How to Plot a Stress-Strain Curve From Test Data

Plotting a stress-strain curve starts with converting the raw force and displacement data from a tensile test into stress and strain values, then graphing strain on the x-axis and stress on the y-axis. The process is straightforward once you understand what each calculation represents and how to identify the key landmarks on the finished curve.

What Your Testing Machine Actually Measures

A Universal Testing Machine (UTM) doesn’t directly measure stress or strain. It records two things: the load (force) applied to the specimen, captured by a load cell, and the change in length of the specimen during the test. The change in length is tracked either by an extensometer attached to the specimen or by recording the motion between the machine’s crossheads. These raw values, force in Newtons or pounds and displacement in millimeters or inches, are your starting point. Most machines export this data as a spreadsheet or CSV file with thousands of rows, one for each measurement interval during the test.

Converting Force and Displacement to Stress and Strain

Before you plot anything, you need two measurements from your specimen taken before the test: the original cross-sectional area and the original gauge length (the section of the specimen being measured for deformation).

Engineering stress equals the applied force divided by the original cross-sectional area. If your specimen is round, that area is π times the radius squared. Stress is reported in Pascals (Pa) in SI units, though most engineering materials are stiff enough that you’ll see values in megapascals (MPa) or gigapascals (GPa). In US customary units, stress is reported in pounds per square inch (PSI or ksi).

Engineering strain equals the change in length divided by the original gauge length. Because it’s a ratio of two lengths, strain has no units. It’s often expressed as a decimal (0.05) or as a percentage (5%). When plotting, you can use either convention, but be consistent and label your axis clearly.

In a spreadsheet, create two new columns. In one, divide every force value by the original area. In the other, divide every displacement value by the original gauge length. These two columns are your stress and strain data, ready to plot.

Setting Up the Plot

Strain goes on the x-axis. Stress goes on the y-axis. This convention is universal in materials science.

In Excel, select both columns of data and insert an XY (Scatter) chart with points only. Do not use a Line chart, which is designed for equally spaced categories and will distort your data. Choose the smallest point size available to keep the plot clean, especially since tensile tests often generate thousands of data points. Set both axes to start at zero. For the y-axis, use a standard number format with no decimal places (stress values like 350 MPa don’t need decimals). For the x-axis, you can display strain as a decimal or as a percentage, whichever your field expects.

If you’re plotting a single dataset, remove the legend to reduce clutter. If you’re comparing multiple materials on the same graph, make sure each dataset uses a different point shape, not just a different color, so the chart remains readable in black and white. Add axis labels with units (for example, “Stress (MPa)” and “Strain (mm/mm)” or “Strain (%)”) and a descriptive title.

In Python, the workflow is similar. Import your data using a library like Pandas, store your stress and strain columns as variables, and use Matplotlib to create a scatter or line plot. Label your axes and save the figure as a PNG.

Key Landmarks on the Curve

Once your curve is plotted, you can identify several important features that describe how the material behaves under load.

The linear region appears first. At low strains, stress and strain increase in direct proportion, forming a straight line. The slope of this line is Young’s modulus (E), calculated simply as stress divided by strain in this region. A steeper slope means a stiffer material. Steel’s modulus is around 200 GPa, while a soft polymer might be closer to 1 GPa or less.

The proportional limit is the point where the curve first deviates from that straight line. Up to this point, the material behaves like a spring: remove the load and it returns to its original shape. The elastic limit is closely related, marking the last point at which the material fully recovers. In practice, these two points are often nearly identical.

The yield point is where permanent deformation begins. For some materials like mild steel, this appears as a sudden drop or plateau on the curve. For most metals and polymers, though, the transition from elastic to plastic behavior is gradual, and there’s no obvious kink in the curve to point to.

Ultimate tensile strength (UTS) is the highest point on the engineering stress-strain curve, representing the maximum stress the material can withstand. After this peak, the specimen begins to neck, meaning one section thins out more rapidly than the rest. The engineering stress appears to drop after UTS, but this is partly an artifact of using the original cross-sectional area in the calculation. The UTS is the most commonly reported property from a tensile test, though engineers designing with ductile metals typically rely more on yield strength.

The fracture point is where the curve ends. The strain at fracture includes deformation from both the necked and unnecked regions of the specimen, so its value depends somewhat on gauge length.

Finding Yield Strength With the 0.2% Offset Method

When your curve doesn’t show a clear yield point, the standard practice is to use the 0.2% offset method. Draw a straight line with the same slope as the linear (elastic) portion of your curve, but start it at 0.2% strain (0.002) on the x-axis instead of at the origin. Where this line intersects your stress-strain curve is the offset yield strength.

In a spreadsheet, you can construct this line by calculating stress values using the equation: offset stress = E × (strain − 0.002), where E is the Young’s modulus you measured from the linear region. Plot this line on the same chart as your data and read off the intersection point. This method is codified in ASTM testing standards and gives a repeatable, objective value for yield strength even when the elastic-to-plastic transition is smooth.

Engineering vs. True Stress-Strain Curves

Everything described so far produces an engineering stress-strain curve, which uses the specimen’s original dimensions throughout. This is the standard approach for reporting material properties because those starting dimensions are easy to measure. But engineering stress doesn’t reflect what’s physically happening once the specimen starts to neck: the cross-sectional area is shrinking, so the actual stress on the material is higher than the engineering value suggests.

A true stress-strain curve accounts for this. True stress is the load divided by the instantaneous cross-sectional area at each moment, not the original area. True strain is the natural logarithm of the ratio of the current gauge length to the original gauge length. On a true stress-strain curve, stress continues to rise even past the point of necking, giving a more accurate picture of material behavior under large deformations. This is why true stress-strain data is used in computer simulations of forming and crash events.

The catch is that true stress-strain data from a standard tensile test is only valid up to the onset of necking (uniform elongation). Once necking begins, the strain is no longer uniform along the gauge length, and the simple conversion formulas break down. For most reporting and comparison purposes, engineering stress and strain are what you want.

Practical Tips for Clean Results

Save your work incrementally with numbered filenames (Steel6150Tens1, Steel6150Tens2, and so on) so you can recover from mistakes without reprocessing everything. Use cell comments in your spreadsheet to document what each calculated column represents, especially if someone else will use your file later. Freeze the header row so column labels stay visible as you scroll through thousands of data points.

When plotting experimental data, use points with no connecting lines. Reserve smooth lines for theoretical fits or calculated constructions like the 0.2% offset line. This visual distinction makes it immediately clear which data is measured and which is derived. If your strain data looks noisy at very low values, the extensometer or crosshead encoder may have limited resolution at small displacements. You can still extract a reliable modulus by fitting a line to the clearly linear portion of the curve rather than using just the first few data points.