> For the complete documentation index, see [llms.txt](https://s-klnw.gitbook.io/study-manual/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://s-klnw.gitbook.io/study-manual/2-root-guide/2.3-shu-xing-she-zhi.md).

# 2.3 属性设置

`TStyle` 是用来定义绘图风格的类，它包含所有元素的各种属性设置，如颜色、宽度、填充、字体等，从而创建出符合用户需求的效果。但是 <mark style="color:red;">**`TStyle`**</mark> <mark style="color:red;">**是用于设置全局绘图样式的类，在局部设置中，全局设置**</mark> <mark style="color:red;">**`TStyle`**</mark> <mark style="color:red;">**会被覆盖，导致**</mark> <mark style="color:red;">**`TStyle`**</mark> <mark style="color:red;">**的设置不生效。所以本章介绍的成员函数均以局部设置的类下呈现。**</mark>

TStyle 的成员函数：

```bash
root [1] TStyle::Set
```

<details>

<summary>汇总</summary>

<table><thead><tr><th width="224.73828125">函数名</th><th>说明或作用</th></tr></thead><tbody><tr><td><code>SetAxisColor</code></td><td>设置轴线颜色</td></tr><tr><td><code>SetBarOffset</code></td><td>设置条形图的偏移量</td></tr><tr><td><code>SetBarWidth</code></td><td>设置条形图的宽度</td></tr><tr><td><code>SetBit</code></td><td>设置位标志</td></tr><tr><td><code>SetCanvasBorderMode</code></td><td>设置画布边框形式</td></tr><tr><td><code>SetCanvasBorderSize</code></td><td>设置画布边框大小</td></tr><tr><td><code>SetCanvasColor</code></td><td>设置画布颜色</td></tr><tr><td><code>SetCanvasDefH</code></td><td>设置画布的默认高度</td></tr><tr><td><code>SetCanvasDefW</code></td><td>设置画布的默认宽度</td></tr><tr><td><code>SetCanvasDefX</code></td><td>设置画布的默认 X 位置</td></tr><tr><td><code>SetCanvasDefY</code></td><td>设置画布的默认 Y 位置</td></tr><tr><td><code>SetCanvasPreferGL</code></td><td>设置是否优先使用 OpenGL 渲染画布</td></tr><tr><td><code>SetCapLinePS</code></td><td>设置 PostScript 中线条的端点样式</td></tr><tr><td><code>SetColorModelPS</code></td><td>设置 PostScript 的颜色模型</td></tr><tr><td><code>SetDateX</code></td><td>设置 X 轴日期显示</td></tr><tr><td><code>SetDateY</code></td><td>设置 Y 轴日期显示</td></tr><tr><td><code>SetDrawBorder</code></td><td>设置是否绘制边框</td></tr><tr><td><code>SetDrawOption</code></td><td>设置绘图选项</td></tr><tr><td><code>SetDtorOnly</code></td><td>设置仅调用析构函数</td></tr><tr><td><code>SetEndErrorSize</code></td><td>设置误差条末端的大小</td></tr><tr><td><code>SetErrorX</code></td><td>设置 X 轴误差条</td></tr><tr><td><code>SetFillAttributes</code></td><td>设置填充属性</td></tr><tr><td><code>SetFillColor</code></td><td>设置填充颜色</td></tr><tr><td><code>SetFillColorAlpha</code></td><td>设置填充颜色的透明度</td></tr><tr><td><code>SetFillStyle</code></td><td>设置填充样式</td></tr><tr><td><code>SetFitFormat</code></td><td>设置拟合结果的格式</td></tr><tr><td><code>SetFrameBorderMode</code></td><td>设置框架边框模式</td></tr><tr><td><code>SetFrameBorderSize</code></td><td>设置框架边框大小</td></tr><tr><td><code>SetFrameFillColor</code></td><td>设置框架内部填充色</td></tr><tr><td><code>SetFrameFillStyle</code></td><td>设置框架内部填充风格</td></tr><tr><td><code>SetFrameLineColor</code></td><td>设置框架线条颜色</td></tr><tr><td><code>SetFrameLineStyle</code></td><td>设置框架线条样式</td></tr><tr><td><code>SetFrameLineWidth</code></td><td>设置框架线条宽度</td></tr><tr><td><code>SetFuncColor</code></td><td>设置函数线条颜色</td></tr><tr><td><code>SetFuncStyle</code></td><td>设置函数线条样式</td></tr><tr><td><code>SetFuncWidth</code></td><td>设置函数线条宽度</td></tr><tr><td><code>SetGridColor</code></td><td>设置网格颜色</td></tr><tr><td><code>SetGridStyle</code></td><td>设置网格样式</td></tr><tr><td><code>SetGridWidth</code></td><td>设置网格宽度</td></tr><tr><td><code>SetHatchesLineWidth</code></td><td>设置阴影线宽度</td></tr><tr><td><code>SetHatchesSpacing</code></td><td>设置阴影线间距</td></tr><tr><td><code>SetHeaderPS</code></td><td>设置 PostScript 文件头</td></tr><tr><td><code>SetHistFillColor</code></td><td>设置直方图填充色</td></tr><tr><td><code>SetHistFillStyle</code></td><td>设置直方图填充风格</td></tr><tr><td><code>SetHistLineColor</code></td><td>设置直方图线条颜色</td></tr><tr><td><code>SetHistLineStyle</code></td><td>设置直方图线条样式</td></tr><tr><td><code>SetHistLineWidth</code></td><td>设置直方图线条宽度</td></tr><tr><td><code>SetHistMinimumZero</code></td><td>设置直方图 Y 轴最小值是否强制为 0</td></tr><tr><td><code>SetHistTopMargin</code></td><td>设置直方图顶部边距</td></tr><tr><td><code>SetImageScaling</code></td><td>设置图像缩放比例</td></tr><tr><td><code>SetIsReading</code></td><td>设置是否正在读取</td></tr><tr><td><code>SetJoinLinePS</code></td><td>设置 PostScript 中线条的连接样式</td></tr><tr><td><code>SetLabelColor</code></td><td>设置标签颜色</td></tr><tr><td><code>SetLabelFont</code></td><td>设置标签字体</td></tr><tr><td><code>SetLabelOffset</code></td><td>设置标签偏移量</td></tr><tr><td><code>SetLabelSize</code></td><td>设置标签大小</td></tr><tr><td><code>SetLegendBorderSize</code></td><td>设置图例边框大小</td></tr><tr><td><code>SetLegendFillColor</code></td><td>设置图例填充颜色</td></tr><tr><td><code>SetLegendFont</code></td><td>设置图例字体</td></tr><tr><td><code>SetLegendTextSize</code></td><td>设置图例文本大小</td></tr><tr><td><code>SetLegoInnerR</code></td><td>设置乐高图内部半径</td></tr><tr><td><code>SetLineAttributes</code></td><td>设置线条属性</td></tr><tr><td><code>SetLineColor</code></td><td>设置线条颜色</td></tr><tr><td><code>SetLineColorAlpha</code></td><td>设置线条颜色的透明度</td></tr><tr><td><code>SetLineScalePS</code></td><td>设置 PostScript 中线条的缩放比例</td></tr><tr><td><code>SetLineStyle</code></td><td>设置线条样式</td></tr><tr><td><code>SetLineStyleString</code></td><td>设置线条样式的字符串表示</td></tr><tr><td><code>SetLineWidth</code></td><td>设置线条宽度</td></tr><tr><td><code>SetMarkerAttributes</code></td><td>设置标记属性</td></tr><tr><td><code>SetMarkerColor</code></td><td>设置标记颜色</td></tr><tr><td><code>SetMarkerColorAlpha</code></td><td>设置标记颜色的透明度</td></tr><tr><td><code>SetMarkerSize</code></td><td>设置标记大小</td></tr><tr><td><code>SetMarkerStyle</code></td><td>设置标记样式</td></tr><tr><td><code>SetName</code></td><td>设置名称</td></tr><tr><td><code>SetNameTitle</code></td><td>设置名称和标题</td></tr><tr><td><code>SetNdivisions</code></td><td>设置轴的分割数</td></tr><tr><td><code>SetNumberContours</code></td><td>设置等高线的数量</td></tr><tr><td><code>SetObjectStat</code></td><td>设置对象统计信息</td></tr><tr><td><code>SetOptDate</code></td><td>设置是否显示日期</td></tr><tr><td><code>SetOptFile</code></td><td>设置文件选项</td></tr><tr><td><code>SetOptFit</code></td><td>设置拟合选项</td></tr><tr><td><code>SetOptLogx</code></td><td>设置 X 轴是否为对数刻度</td></tr><tr><td><code>SetOptLogy</code></td><td>设置 Y 轴是否为对数刻度</td></tr><tr><td><code>SetOptLogz</code></td><td>设置 Z 轴是否为对数刻度</td></tr><tr><td><code>SetOptStat</code></td><td>设置图例的内容</td></tr><tr><td><code>SetOptTitle</code></td><td>设置是否显示标题</td></tr><tr><td><code>SetPadBorderMode</code></td><td>设置 Pad 边框模式</td></tr><tr><td><code>SetPadBorderSize</code></td><td>设置 Pad 边框大小</td></tr><tr><td><code>SetPadBottomMargin</code></td><td>设置 Pad 底部边距</td></tr><tr><td><code>SetPadColor</code></td><td>设置 Pad 颜色</td></tr><tr><td><code>SetPadGridX</code></td><td>设置 Pad 中 X 轴网格</td></tr><tr><td><code>SetPadGridY</code></td><td>设置 Pad 中 Y 轴网格</td></tr><tr><td><code>SetPadLeftMargin</code></td><td>设置 Pad 左边距</td></tr><tr><td><code>SetPadRightMargin</code></td><td>设置 Pad 右边距</td></tr><tr><td><code>SetPadTickX</code></td><td>设置 Pad 中 X 轴刻度</td></tr><tr><td><code>SetPadTickY</code></td><td>设置 Pad 中 Y 轴刻度</td></tr><tr><td><code>SetPadTopMargin</code></td><td>设置 Pad 顶部边距</td></tr><tr><td><code>SetPaintTextFormat</code></td><td>设置文本绘制格式</td></tr><tr><td><code>SetPalette</code></td><td>设置调色板</td></tr><tr><td><code>SetPaperSize</code></td><td>设置纸张大小</td></tr><tr><td><code>SetScreenFactor</code></td><td>设置屏幕缩放因子</td></tr><tr><td><code>SetStatBorderSize</code></td><td>设置统计框边框大小</td></tr><tr><td><code>SetStatColor</code></td><td>设置统计框颜色</td></tr><tr><td><code>SetStatFont</code></td><td>设置统计框字体</td></tr><tr><td><code>SetStatFontSize</code></td><td>设置统计框字体大小</td></tr><tr><td><code>SetStatFormat</code></td><td>设置统计框格式</td></tr><tr><td><code>SetStatH</code></td><td>设置统计框高度</td></tr><tr><td><code>SetStatStyle</code></td><td>设置统计框样式</td></tr><tr><td><code>SetStatTextColor</code></td><td>设置统计框文本颜色</td></tr><tr><td><code>SetStatW</code></td><td>设置统计框宽度</td></tr><tr><td><code>SetStatX</code></td><td>设置统计框 X 位置</td></tr><tr><td><code>SetStatY</code></td><td>设置统计框 Y 位置</td></tr><tr><td><code>SetStripDecimals</code></td><td>设置是否去除小数部分</td></tr><tr><td><code>SetTextAlign</code></td><td>设置文本对齐方式</td></tr><tr><td><code>SetTextAngle</code></td><td>设置文本角度</td></tr><tr><td><code>SetTextAttributes</code></td><td>设置文本属性</td></tr><tr><td><code>SetTextColor</code></td><td>设置文本颜色</td></tr><tr><td><code>SetTextColorAlpha</code></td><td>设置文本颜色的透明度</td></tr><tr><td><code>SetTextFont</code></td><td>设置文本字体</td></tr><tr><td><code>SetTextSize</code></td><td>设置文本大小</td></tr><tr><td><code>SetTextSizePixels</code></td><td>设置文本大小（以像素为单位）</td></tr><tr><td><code>SetTickLength</code></td><td>设置刻度长度</td></tr><tr><td><code>SetTimeOffset</code></td><td>设置时间偏移量</td></tr><tr><td><code>SetTitle</code></td><td>设置标题</td></tr><tr><td><code>SetTitleAlign</code></td><td>设置标题对齐方式</td></tr><tr><td><code>SetTitleBorderSize</code></td><td>设置标题边框大小</td></tr><tr><td><code>SetTitleColor</code></td><td>设置标题颜色</td></tr><tr><td><code>SetTitleFillColor</code></td><td>设置标题填充颜色</td></tr><tr><td><code>SetTitleFont</code></td><td>设置标题字体</td></tr><tr><td><code>SetTitleFontSize</code></td><td>设置标题字体大小</td></tr><tr><td><code>SetTitleH</code></td><td>设置标题高度</td></tr><tr><td><code>SetTitleOffset</code></td><td>设置标题偏移量</td></tr><tr><td><code>SetTitlePS</code></td><td>设置 PostScript 标题</td></tr><tr><td><code>SetTitleSize</code></td><td>设置标题大小</td></tr><tr><td><code>SetTitleStyle</code></td><td>设置标题样式</td></tr><tr><td><code>SetTitleTextColor</code></td><td>设置标题文本颜色</td></tr><tr><td><code>SetTitleW</code></td><td>设置标题宽度</td></tr><tr><td><code>SetTitleX</code></td><td>设置标题 X 位置</td></tr><tr><td><code>SetTitleXOffset</code></td><td>设置标题 X 偏移量</td></tr><tr><td><code>SetTitleXSize</code></td><td>设置标题 X 大小</td></tr><tr><td><code>SetTitleY</code></td><td>设置标题 Y 位置</td></tr><tr><td><code>SetTitleYOffset</code></td><td>设置标题 Y 偏移量</td></tr><tr><td><code>SetTitleYSize</code></td><td>设置标题 Y 大小</td></tr><tr><td><code>SetUniqueID</code></td><td>设置唯一标识符</td></tr></tbody></table>

</details>

填充属性包括填充颜色、填充风格、调色板等内容的设置：

{% content-ref url="/spaces/pf9IsLOaNy0SNtz1zmqo/pages/llxyiNN8w4UvSsN278mq" %}
[2.3.1 填充属性](/study-manual/2-root-guide/2.3.1-tian-chong-shu-xing.md)
{% endcontent-ref %}

坐标轴属性设置包括轴线、刻度、轴标题等内容的设置：

{% content-ref url="/spaces/pf9IsLOaNy0SNtz1zmqo/pages/wPgT8ta892hAlsOmw9YO" %}
[2.3.2 坐标轴属性](/study-manual/2-root-guide/2.3.2-zuo-biao-zhou-shu-xing.md)
{% endcontent-ref %}

文字属性包括颜色、字体等内容的设置：

{% content-ref url="/spaces/pf9IsLOaNy0SNtz1zmqo/pages/sakrBI3TuMcwBvBEOvXi" %}
[2.3.3 文字属性](/study-manual/2-root-guide/2.3.3-wen-zi-shu-xing.md)
{% endcontent-ref %}

## 线的属性

线的属性设置通常包含颜色、宽度、风格，可以分别通过下面的命令来分别设置：

* 风格：`SetLineStyle()`，<mark style="color:red;">风格的重要性体现在如果不先设置风格属性，那么其他属性，如颜色、大小，可能不会生效。</mark>

<figure><img src="/files/eau3A5yutx1IMkJFlOlD" alt=""><figcaption></figcaption></figure>

* 颜色：`SetLineColor()`，参考[2.3.1 填充属性](/study-manual/2-root-guide/2.3.1-tian-chong-shu-xing.md)。
* 宽度：`SetLineWidth()`，<mark style="color:green;">线宽通常宜设置为 2</mark>

<figure><img src="/files/ZmvXu5Mwoym2Eg8IlgM7" alt=""><figcaption></figcaption></figure>

<mark style="color:green;">当然，如果你需要一个带状区域时，也可以简单的使用线宽来调整：</mark>

```
gr3->SetLineWidth(-802);    // ffll;ff=fill;ll=li
```

## 记号属性

记号的属性设置通常包含颜色、风格、线宽、大小，可以分别通过下面的命令来分别设置：

* 风格：`SetMarkerStyle()`

<figure><img src="/files/hgjZcQkqhgyJRfwA53FE" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="danger" %}
**注意：**

在绘图时应小心使用非对称符号。 这个图表显示了符号的误导性！这两个绘图代表相同的数据集，但由于符号选择不当，顶部的两个绘图看起来比底部示例相距更远。
{% endhint %}

<figure><img src="/files/I8w37ighAouZlb9MXFfg" alt="" width="563"><figcaption></figcaption></figure>

* 颜色：`SetMarkerColor()`，参考[2.3.1 填充属性](/study-manual/2-root-guide/2.3.1-tian-chong-shu-xing.md)。
* 线宽：`SetMarkerStyle()`

通常情况下，你不需要额外设置记号的线宽，但是当你需要着重标注的时候，可以使用 `SetMarkerStyle()` 来设置线宽，`50 - 67` 线宽为 `2`、`68 - 85` 线宽为 `3`，以此类推：

<figure><img src="/files/ZxJh62wIeRR5rFbBEhCZ" alt="" width="563"><figcaption></figcaption></figure>

* 大小：`SetMarkerSize()`

下图显示了各种标记尺寸。默认标记大小 `=1` 显示在左上角。标记大小不指任何坐标系，它是一个绝对值。因此，<mark style="color:green;">**标记大小不受**</mark><mark style="color:green;">**&#x20;**</mark><mark style="color:green;">**`TPad`**</mark><mark style="color:green;">**&#x20;**</mark><mark style="color:green;">**比例变化的影响。等于**</mark> <mark style="color:green;">**`1`**</mark> <mark style="color:green;">**的标记大小对应于 8 像素**</mark>。

<figure><img src="/files/Pqd55UN1oMme6RtTaDA6" alt="" width="563"><figcaption></figcaption></figure>

## 图例用法

图例可以用来解释图中的各个部分的名称，他的用法是：`TLegend *l = new TLegend(,,,,"")`，意为新建一个名为 `l` 的图例，参数前四位是相对于画布的归一化坐标，`(0,0)` 表示画布的左下角，`(1,1)` 表示画布的右上角。

#### 增加图例内容

使用 `l->AddEntry(,"")` 函数为你的图例添加新的解释：

<details>

<summary> e.g. 介绍四个高斯函数的图例</summary>

```c
void ex3_gaus(){
    
    TCanvas *c = new TCanvas("c","Four Gaussian Distributions",600,600);
    c->SetGrid();

    TF1 *f1 = new TF1("f1","TMath::Gaus(x,0,1)",-6,6);
    TF1 *f2 = new TF1("f2","TMath::Gaus(x,0,2)",-6,6);
    TF1 *f3 = new TF1("f3","TMath::Gaus(x,1,1)",-6,6);
    TF1 *f4 = new TF1("f4","TMath::Gaus(x,1,2)",-6,6);
    
    TLegend *leg = new TLegend(0.1,0.7,0.4,0.9,"");
    leg->AddEntry(f1,"Gaus(0,1)");
    leg->AddEntry(f2,"Gaus(0,2)");
    leg->AddEntry(f3,"Gaus(1,1)");
    leg->AddEntry(f4,"Gaus(1,2)");

    f1->SetLineColor(2);
    f1->SetLineWidth(4);
    f1->Draw();   

    f2->SetLineColor(4);
    f2->SetLineWidth(4);
    f2->Draw("same");
    
    f3->SetLineColor(6);
    f3->SetLineWidth(4);
    f3->Draw("same");
    
    f4->SetLineColor(8);
    f4->SetLineWidth(4);
    f4->Draw("same");
    
    f1->SetTitle("Four Gaussian Distributions");
    leg->Draw();

    c->SaveAs("ex3_gaus.pdf");
    c->SaveAs("ex3_gaus.svg");

}
```

</details>

<figure><img src="/files/zEUrrQJwv024WSUJUwD7" alt="" width="425"><figcaption></figcaption></figure>

#### 修改图例框

使用 `SetBorderSize(0)` 命令**关闭图例框**在某些情况下图像更加美观

<mark style="color:red;">添加阴影</mark>

<mark style="color:red;">修改位置</mark>

设置多列：`leg->SetNColumns(2)`

## 画布属性

`gPad->SetMargin(,,,)` 四个参数分别表示左边距、右边距、下边距和上边距的大小。也可以分别设置，e.g.

`pad->SetBottomMargin(0.12)`

`pad-> SetTopMargin (0.04)`

`pad->SetRightMargin (0.02)`

## 画板属性

#### 自定义画板位置：

设置画布上的画板位置为倒品字形分布：

```c
   TCanvas *c1 = new TCanvas("c1","Histogram Drawing Options",200,10,700,900);
   TPad *pad1 = new TPad("pad1", "The pad with the function",0.03,0.62,0.50,0.92);
   TPad *pad2 = new TPad("pad2", "The pad with the histogram",0.51,0.62,0.98,0.92);
   TPad *pad3 = new TPad("pad3", "The pad with the histogram",0.03,0.02,0.97,0.57);
   pad1->Draw();
   pad2->Draw();
   pad3->Draw();
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://s-klnw.gitbook.io/study-manual/2-root-guide/2.3-shu-xing-she-zhi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
