0
$\begingroup$

I want to get a high-resolution figure using Mathmatica. However, the FrameTicks are too short, and thus I installed the CustomTicks package. With its help, I can plot good ticks. However now a new problem has arisen. I do not know how to edit the tick labels using my expected text. An example code to show my problem:

Plot[Sin[x], {x, 0, 6 Pi}, Axes -> False, Frame -> True,
 FrameTicks -> {{LinTicks[{-1, 0, 1}, {-0.5, 0.5}, 
     ShowMinorTickLabels -> True, DecimalDigits -> 0], 
    None}, {LinTicks[0, 15, 3, 2], None}},
 
 FrameTicksStyle -> {{Directive[Black, 16, Plain], 
    None}, {Directive[Black, 16, Plain], None}}]

I got this figure:

enter image description here

However, what I expected is to plot the y axis as [-1, -0.5, 0, 0.5, 1]. If I change the DecimalDigits -> 1 to be DecimalDigits -> 0, I got:

enter image description here

My ideas:

(1) If I can define the DecimalDigits for MajorTicks and MinorTicks respectively, I should be able to solve this problem.

(2) If I can instead the tick values using string text, I can also solve this. For this solution, I know how to do this using FrameTicks, but I need to use the CustomTicks package because I want to plot ticks in proper length, thickness and color.

I learned the CustomTicks manual and have tried many times. I still can not solve this problem up to now.

Do you have some ideas to solve this problem? Thank you!

$\endgroup$
1
$\begingroup$

You can use a TickLabelFunction.

Plot[Sin[x], {x, 0, 6 Pi}, Axes -> False, Frame -> True, 
 FrameTicks -> {{LinTicks[{-1, 0, 1}, {-0.5, 0.5}, 
     ShowMinorTickLabels -> True, TickLabelFunction -> Simplify[# &], 
     DecimalDigits -> 1], None}, {LinTicks[0, 15, 3, 2], None}}, 
 FrameTicksStyle -> {{Directive[Black, 16, Plain], 
    None}, {Directive[Black, 16, Plain], None}}]

enter image description here

$\endgroup$
1
  • $\begingroup$ Hi, Jean. This is exactly what I want. Thank you! $\endgroup$ – Mr.2023 Oct 28 '20 at 1:46
3
$\begingroup$

It can be done without any additional packages. Just define the style of each tick as I did for left axis:

Plot[Sin[x], {x, 0, 2 Pi},
 Frame -> True,
 LabelStyle -> Directive[Black, 16, Bold],
 FrameTicks -> {
   {Table[{-1 + 0.5 i,  
           (-1 + 0.5 i) 2,
           {i*0.025, 0},  
           Directive[Thickness[0.0075*i],ColorData["VisibleSpectrum"][450 + 45 i]]
     }, {i, 0, 4}], None},
   {Automatic, None}
   },
 ImageSize -> 1000]

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.