# How can I replace x-axis labels with pre-determined symbols? [closed]

I want to take a simple plot and change the x-axis so it appears to be measured in terms of certain symbols that are used in the physics literature. See the image below for an example. I will rephrase this as follows: I have some set of numerical coordinates which trace out the curves in my plot. For equal spacings on the x-axis (say once every 100 points), I want to label the line $$x=100\,n$$ with a symbol.

I don't know how to do this. The documentation provided by Mathematica didn't help me. This doesn't seem like something done by just changing the ticks settings.

• Provide sample data to work with – MarcoB Apr 1 '19 at 17:53
• The curves can be anything. You can just plot a simple function if you like. This is just an illustration of how I want to format the axis, not real data. – miggle Apr 1 '19 at 18:13
• FrameTicks – corey979 Apr 2 '19 at 8:55

This can be done using either Ticks if you're using axes or FrameTicks if you're using a frame on your plot. I made up a plot since I'm not sure the exact data matters.

Most of the code below is flair to make the graph look a bit nicer. The important bit is FrameTicks. I've told MMA to use its best judgement for 3 of the 4 sides of the graph. For plots, the order is usually {{left, right}, {bottom, top}}, though for certain things you can get away with only 2 arguments {x-argument, y-argument}.

For each side of the frame, FrameTicks is expecting a list of ticks and the label to put on those ticks, so in place of bottom from the above list, I would put something like {{x-value1, "x-label1"}, {x-value2, "x-label2"}, ...}. It is also possible to specify the lengths of the ticks in this way: {{x-value1, "x-label1", {insidelength1, outsidelength1}}, {x-value2, "x-label2", {insidelength2, outsidelength2}}, ...}.

Plot[
Piecewise[
{{-(x - 5)^2 + 50, 0 <= x <= 10},
{-(x - 10)^2 + 25, 10 < x < 15}}],
{x, 0, 15},
Axes -> False,
Frame -> {{True, False}, {True, False}},
FrameLabel -> {{"E (eV)", None}, {"k-space", None}},
FrameStyle -> Directive[16, Black],
FrameTicks ->
{{Automatic, Automatic}, {{{0, "K"}, {5, "Γ"}, {10, "M"}, {15, "K"}}, Automatic}},
ImageSize -> 500,
Epilog -> {
Dashing[{0.001, 0.01}],
Line[{{0, -1}, {0, 25}}],
Line[{{5, -1}, {5, 50}}],
Line[{{10, -1}, {10, 25}}],
Line[{{15, -1}, {15, 0}}]
}
] • Beautiful, thanks a lot! Much easier to understand in the context of using a frame. – miggle Apr 1 '19 at 18:29