Thanks to this answer for the gradient filling you can do the following:
sign[text_, xc_, size_] :=
Graphics[{FaceForm[White], EdgeForm[Thin],
Polygon[{{0, 0}, {.25, -.40}, {2.5, -.40}, {2.5, .40}, {.25, .40}}],
Style[Text[Round[text, .01], {1.25, 0}], size, Black]}, ImageSize -> Scaled[xc]]
gradientBackground =
With[{bottomColor = Black, topColor = [email protected]},
Inset[Show[Rasterize[Graphics[Polygon[{{0, 0}, {1, 0}, {1, 1}, {0, 1}},
VertexColors -> {bottomColor, bottomColor, topColor, topColor}],
PlotRangePadding -> 0, ImagePadding -> 0], "Image"],
AspectRatio -> Full], {Left, Bottom}, {0, 0},
ImageScaled[{1, 1}]]];
SeedRandom@0;
bankerData = Transpose[{Range[100], Accumulate[RandomReal[{-1, 1}, 100]] + 10}];
last = Last@bankerData;
ypoints = Last /@ bankerData;
grid = Grid[{{"Day session:", SpanFromLeft}, {"Last Price", Last@last},
{"Highest", Max@(Last /@ bankerData)}, {"Average", Mean@(Last /@ bankerData)},
{"Lowest", Min@(Last /@ bankerData)}}];
lp = ListLinePlot[bankerData, Prolog -> gradientBackground,
PlotRangePadding -> None, Frame -> True, Axes -> False,
FrameTicks -> {
{All, Thread[{Range[Round[Min@ypoints], Round[Max@ypoints]],
Grid[{{"", #}}, Spacings -> .80] & /@ (# <> ".00" & /@
ToString /@ Range[Round[Min@ypoints], Round[Max@ypoints]])}]~
Join~{{Last@last, sign[Last@last, 45, 11]}}},{All, All}},
FrameTicksStyle -> {{Opacity@0, White}, {White, Opacity@0}},
GridLines -> Automatic, GridLinesStyle -> Dashed,
PlotStyle -> White, Method -> {"GridLinesInFront" -> True},
Background -> Black, PlotRegion -> {{.04, .96}, {.04, .96}},
Filling -> Top, FillingStyle -> Directive@{[email protected], [email protected]},
BaseStyle -> {White, FontFamily -> "Arial"}, PlotRange -> All,
Epilog -> Inset[Framed[grid, Background -> Directive[{Black, [email protected]}]],
Scaled[{.5, .2}]], ImageSize -> 500]