Inspired by the documentation for AxisObject
:
ternFr[xmax_] := Graphics[{AxisObject[Line[xmax {{1, 0}, {0, 0}}],
{0, 100}, AxisLabel -> Placed["Component A",
{0.5, {0.5, 2.5}}], RotateLabel -> Automatic,
TickDirection -> "Inward"],
AxisObject[Line[xmax {{0, 0}, {0.5, Sqrt[3]/2.}}],
{0, 100}, AxisLabel -> Placed["Component B",
{0.5, {0.5, -2.}}], RotateLabel -> 60*Degree,
TickDirection -> "Inward"],
AxisObject[Line[xmax {{0.5, Sqrt[3]/2.}, {1, 0}}],
{0, 100}, AxisLabel -> Placed["Component C",
{0.5, {0.5, -2.}}], RotateLabel -> -60*Degree,
TickDirection -> "Inward"]},
PlotRange -> xmax {{0, 1}, {0, 1}}, Frame -> True];
Show[DensityPlot[x^2 + x*y + (100 - x - y),
Element[{x, y}, Triangle[100*{{0, 0}, {1, 0},
{1/2, Sqrt[3]/2}}]], Frame -> None],
ternFr[100]]