Skip to main content

plotting - How can I write the frame ticks in Scientific Form?


Is there any way to remove the decimal places in the frame ticks. I would like to make the y axis ticks integers. I use the following code. My only problem is how to manipulate the y axis without decimal numbers.


FrameTicks -> {{1, 2, 3}, {#, 1/9.11 10^31 #} & /@ 
FindDivisions[{-2*10^-28, -2*10^-32, 3*10^-30}, 8], None, None}

I would prefer to write the Frame ticks in terms of 10^-n for the decimal numbers. This is the code, I just copied :



deltae[\[HBar]_, n_, mc_, mx_, 
a_, \[Eta]_] = (\[Pi]^2 \[HBar]^2 n^2)/(
2 mc a^2) - (\[Pi]^2 \[HBar]^2 n^2)/(2 mx a^2) + \[Eta];

x[\[HBar]_, n_, mc_, mx_, a_, \[CapitalOmega]_, \[Eta]_] =
1/2 (1 + deltae[\[HBar], n, mc, mx, a, \[Eta]]/Sqrt[
deltae[\[HBar], n, mc, mx, a, \[Eta]]^2 + \[CapitalOmega]^2]);

c[\[HBar]_, n_, mc_, mx_, a_, \[CapitalOmega]_, \[Eta]_] =
1/2 (1 - deltae[\[HBar], n, mc, mx, a, \[Eta]]/Sqrt[

deltae[\[HBar], n, mc, mx, a, \[Eta]]^2 + \[CapitalOmega]^2]);

ex[\[HBar]_, n_, mc_, mx_, a_, \[CapitalOmega]_, \[Eta]_] =
Abs[x[\[HBar], n, mc, mx, a, \[CapitalOmega], \[Eta]]]^2;

ca[\[HBar]_, n_, mc_, mx_, a_, \[CapitalOmega]_, \[Eta]_] =
Abs[c[\[HBar], n, mc, mx, a, \[CapitalOmega], \[Eta]]]^2;

mpol[\[HBar]_, n_, mc_, mx_, a_, \[CapitalOmega]_, \[Eta]_] = (
mc*mx)/(ca[\[HBar], n, mc, mx, a, \[CapitalOmega], \[Eta]]*mx +

mc*ex[\[HBar], n, mc, mx, a, \[CapitalOmega], \[Eta]]);

e[\[HBar]_, n_, mc_, mx_,
a_, \[CapitalOmega]_, \[Eta]_] = (\[Pi]^2 \[HBar]^2 n^2)/(
2 mpol[\[HBar], n, mc, mx, a, \[CapitalOmega], \[Eta]] *a^2);

\[Kappa][\[HBar]_, n_, v_, mc_, mx_, a_, \[CapitalOmega]_, \[Eta]_] =
Sqrt[(2 mpol[\[HBar], n, mc, mx,
a, \[CapitalOmega], \[Eta]] (v -
e[\[HBar], n, mc, mx, a, \[CapitalOmega], \[Eta]]))/\[HBar]^2];


t[\[HBar]_, v_, n_, mc_, mx_,
a_, \[CapitalOmega]_, \[Eta]_] = (4 e[\[HBar], n, mc, mx,
a, \[CapitalOmega], \[Eta]]*(v -
e[\[HBar], n, mc, mx,
a, \[CapitalOmega], \[Eta]]))/(4 e[\[HBar], n, mc, mx,
a, \[CapitalOmega], \[Eta]]*(v -
e[\[HBar], n, mc, mx, a, \[CapitalOmega], \[Eta]]) +
v^2 Sinh[
Sqrt[(2 mpol[\[HBar], n, mc, mx,

a, \[CapitalOmega], \[Eta]] (v -
e[\[HBar], n, mc, mx,
a, \[CapitalOmega], \[Eta]]))/\[HBar]^2] a]^2);

energy[\[HBar]_, v_, n_, mc_, mx_, a_, \[CapitalOmega]_, \[Eta]_,
k_] = 2 t[\[HBar], v, n, mc, mx, a, \[CapitalOmega], \[Eta]]*
e[\[HBar], n, mc, mx, a, \[CapitalOmega], \[Eta]]*(1 - Cos[k*a]);

effectivemass[\[HBar]_, v_, n_, mc_, mx_,
a_, \[CapitalOmega]_, \[Eta]_,

k_] = \[HBar]^2 D[
energy[\[HBar], v, n, mc, mx, a, \[CapitalOmega], \[Eta], k], {k,
2}]^(-1);

em[\[HBar]_, v_, n_, mc_, mx_,
a_, \[CapitalOmega]_, \[Eta]_] = \[HBar]^2/(
8 t[\[HBar], v, n, mc, mx, a, \[CapitalOmega], \[Eta]]*
e[\[HBar], n, mc, mx, a, \[CapitalOmega], \[Eta]]*a^2);




m = 9.11*10^-31;
v = 0.5*10^-3*1.6*10^-19;
v0 = v;
a = 3*10^-6;
\[HBar] = 1.054*10^-34;
\[Tau]x = 6*10^-9;
\[Tau]c = 30*10^-12;
mc = 5*10^-5*m;
mx = 0.1 m;

w0 = 1*10^5;
nr = 3.6*10^3;
\[Eta] = 10^-3*1.6*10^-19;
\[CapitalOmega] = 15*10^-3*1.6*10^-19;

trimPoint[n_, digits_] :=
NumberForm[n, digits,
NumberFormat -> (DisplayForm@
RowBox[Join[{StringTrim[#1, RegularExpression["\\.$"]]},
If[#3 != "", {"\[Times]", SuperscriptBox[#2, #3]}, {}]]] &)];



Graphics`PlotMarkers[];

p1 = ListPlot[
Table[em[\[HBar], v, n, mc, mx, a, \[CapitalOmega], \[Eta] ], {n, 1,
3, 1}], AxesOrigin -> {1, 0},
PlotMarkers -> {Style["\[FilledSquare]", Blue, FontSize -> 14]},
PlotStyle -> {Blue, Thickness[0.008]}, PlotRange -> All,
FrameLabel -> {"\!\(\*

StyleBox[\"n\", \"Text\",\nFontSize->16]\)", "\!\(\*
StyleBox[SuperscriptBox[
StyleBox[\"m\", \"Text\",\nFontSize->16], \"*\"], \"Text\",\n\
FontSize->16]\)\!\(\*
StyleBox[\"/\", \"Text\",\nFontSize->16]\)\!\(\*
StyleBox[SubscriptBox[\"m\", \"e\"], \"Text\",\nFontSize->16]\)"},
Frame -> True,
BaseStyle -> {FontFamily -> "Helvetica", FontSize -> 24},
FrameStyle -> {Directive[Thickness[0.002], 14],
Directive[Thickness[0.002], 14]},

FrameTicks -> {{1, 2, 3}, {#, trimPoint[1/9.11 10^31 #, 1]} & /@
FindDivisions[{1.4*10^-32, 0.01*10^-35, 1.4*10^-34}, 6],
Automatic, Automatic}]

enter image description here


I tryed this one according to the comment by george2079 but would prefer if it is in scientific form like 0.5x10^-2.


FrameTicks -> {{1, 2, 3}, (# {scale, 1}) & /@ 
FindDivisions[{1.4*10^-32/scale, 1.4*10^-35/scale}, 6], None,
None}]


enter image description here




Comments

Popular posts from this blog

functions - Get leading series expansion term?

Given a function f[x] , I would like to have a function leadingSeries that returns just the leading term in the series around x=0 . For example: leadingSeries[(1/x + 2)/(4 + 1/x^2 + x)] x and leadingSeries[(1/x + 2 + (1 - 1/x^3)/4)/(4 + x)] -(1/(16 x^3)) Is there such a function in Mathematica? Or maybe one can implement it efficiently? EDIT I finally went with the following implementation, based on Carl Woll 's answer: lds[ex_,x_]:=( (ex/.x->(x+O[x]^2))/.SeriesData[U_,Z_,L_List,Mi_,Ma_,De_]:>SeriesData[U,Z,{L[[1]]},Mi,Mi+1,De]//Quiet//Normal) The advantage is, that this one also properly works with functions whose leading term is a constant: lds[Exp[x],x] 1 Answer Update 1 Updated to eliminate SeriesData and to not return additional terms Perhaps you could use: leadingSeries[expr_, x_] := Normal[expr /. x->(x+O[x]^2) /. a_List :> Take[a, 1]] Then for your examples: leadingSeries[(1/x + 2)/(4 + 1/x^2 + x), x] leadingSeries[Exp[x], x] leadingSeries[(1/x + 2 + (1 - 1/x...

How to thread a list

I have data in format data = {{a1, a2}, {b1, b2}, {c1, c2}, {d1, d2}} Tableform: I want to thread it to : tdata = {{{a1, b1}, {a2, b2}}, {{a1, c1}, {a2, c2}}, {{a1, d1}, {a2, d2}}} Tableform: And I would like to do better then pseudofunction[n_] := Transpose[{data2[[1]], data2[[n]]}]; SetAttributes[pseudofunction, Listable]; Range[2, 4] // pseudofunction Here is my benchmark data, where data3 is normal sample of real data. data3 = Drop[ExcelWorkBook[[Column1 ;; Column4]], None, 1]; data2 = {a #, b #, c #, d #} & /@ Range[1, 10^5]; data = RandomReal[{0, 1}, {10^6, 4}]; Here is my benchmark code kptnw[list_] := Transpose[{Table[First@#, {Length@# - 1}], Rest@#}, {3, 1, 2}] &@list kptnw2[list_] := Transpose[{ConstantArray[First@#, Length@# - 1], Rest@#}, {3, 1, 2}] &@list OleksandrR[list_] := Flatten[Outer[List, List@First[list], Rest[list], 1], {{2}, {1, 4}}] paradox2[list_] := Partition[Riffle[list[[1]], #], 2] & /@ Drop[list, 1] RM[list_] := FoldList[Transpose[{First@li...

front end - keyboard shortcut to invoke Insert new matrix

I frequently need to type in some matrices, and the menu command Insert > Table/Matrix > New... allows matrices with lines drawn between columns and rows, which is very helpful. I would like to make a keyboard shortcut for it, but cannot find the relevant frontend token command (4209405) for it. Since the FullForm[] and InputForm[] of matrices with lines drawn between rows and columns is the same as those without lines, it's hard to do this via 3rd party system-wide text expanders (e.g. autohotkey or atext on mac). How does one assign a keyboard shortcut for the menu item Insert > Table/Matrix > New... , preferably using only mathematica? Thanks! Answer In the MenuSetup.tr (for linux located in the $InstallationDirectory/SystemFiles/FrontEnd/TextResources/X/ directory), I changed the line MenuItem["&New...", "CreateGridBoxDialog"] to read MenuItem["&New...", "CreateGridBoxDialog", MenuKey["m", Modifiers-...