Swap X/Y axes drawing and use to draw TH1 as bar and as markers. 
Option "haxisg;y+" draw histogram axis as for "hbar" plus allow to draw grids plus draw Y labels on other side Option "bar,base0,same" draws histogram as bars with 0 as reference value Option "P,same" draws histogram as markers Macro also shows how frame margins can be configured and poly-line drawing like filled arrow can be placed relative to frame.
Functionality available only in web-based graphics
   
  
{
   std::vector<double> 
negative = {-5, -7, -3, -1};
 
   std::vector<double> 
positive = {2, 15, 2, 10};
 
   std::vector<std::string> labels = {"Category 1", "Category 2", "Category 3", "Category 4"};
 
   
 
 
   auto hmain = 
new TH1D(
"hmain", 
"title", nbins, 0, nbins);
 
   hmain->SetMarkerStyle(33);
 
 
   auto hpos = 
new TH1D(
"hpos", 
"title", nbins, 0, nbins);
 
 
   auto hneg = 
new TH1D(
"hneg", 
"title", nbins, 0, nbins);
 
 
 
   for (
unsigned n = 0; 
n < nbins; 
n++) {
 
   }
 
 
   auto haxis = 
new TH1D(
"haxis", 
"title", nbins, 0, nbins);
 
   for (
unsigned n = 0; 
n < nbins; 
n++)
 
      haxis->GetXaxis()->SetBinLabel(
n + 1, labels[
n].c_str());
 
   haxis->GetXaxis()->SetTickSize(0);
 
   haxis->GetXaxis()->SetLabelSize(0.07);
 
   haxis->GetXaxis()->SetLabelOffset(0.02);
 
 
   auto c1 = 
new TCanvas(
"chaxis", 
"title", 1500, 800);
 
 
   if (!
gROOT->IsBatch() && !
c1->IsWeb())
 
      ::Warning(
"haxis.cxx", 
"macro may not work without enabling web-based canvas");
 
 
   
 
 
   c1->Add(
hpos, 
"bar,base0,same"); 
 
   c1->Add(
hneg, 
"bar,base0,same"); 
 
 
 
 
 
   };
 
 
 
   auto box = 
new TBox(0.2, 6, 0.8, 14);
 
   
 
   auto l1 = 
new TLatex(0.5, 10, 
"Text inside frame");
 
   
}
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char x1
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void xpos
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void ypos
 
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
 
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
 
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
 
1-D histogram with a double per channel (see TH1 documentation)
 
To draw Mathematical Formula.
 
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
 
Defined by an array on N points in a 2-D space.
 
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
 
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
 
- Author
 - Sergey Linev 
 
Definition in file haxis.cxx.