# pie
饼图
函数库: TyPlot
# 语法
pie(X)
pie(X, Key=Value)
pie(ax,___)
p = pie(___)
# 说明
pie(X) 使用 X 中的数据绘制饼图。饼图的每个扇区代表 X 中的一个元素。
- 如果 sum(X) ≤ 1,X 中的值直接指定饼图扇区的面积。如果 sum(X) < 1,pie 仅绘制部分饼图;
- 如果 sum(X) > 1,则 pie 通过 X/sum(X) 对值进行归一化,以确定饼图的每个扇区的面积。示例
pie(X,Key=Value) 使用一个或多个 Key=Value 对组参数指定饼图属性。可以将此选项与前面语法中的任何输入参数组合一起使用。名称-值对组设置将应用于绘制的所有饼图。
pie(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区(gca)中。选项 ax 可以位于前面的语法中的任何输入参数组合之前。示例
p=pie(___) 返回一个由补片和文本图形对象组成的向量。该输入可以是先前语法中的任意输入参数组合。示例
# 示例
创建带偏移扇区的饼图
创建向量 X 的饼图。
using TyPlot
X = [1, 3, 0.5, 2.5, 2]
pie(X)
通过将对应的 explode 元素设置为 0.1 来偏移第二和第四块饼图扇区。
pie(X, explode = [0, 0.1, 0, 0.1, 0], autopct = "%.0f%%")

指定饼图的文本标签
创建向量 X 的饼图并标记扇区。
using TyPlot
X = 1:3
labels = ["Taxes","Expenses","Profit"]
pie(X, labels = labels)

修改饼图的文本标签
创建一个标签饼图,然后修改文件标签的颜色和字体大小。
using TyPlot
X = 1:3
labels = ["Taxes","Expenses","Profit"]
p = pie(X, labels = labels)
获取标签 “Profit” 的文本对象。更改其颜色和字体大小。使用圆点表示法设置属性。
t = p[6]
t.set_backgroundcolor("cyan")
t.set_edgecolor("red")
t.set_color("b")
t.set_fontsize(14)
plt_update()

指定百分比标签的格式
创建一个饼图,并指定格式表达式以使每个标签显示小数点后三位数。要在标签中包含百分号,请在表达式末尾指定 "%%"。
using TyPlot
X = [1/3, 2/3]
pie(X, autopct = "%.3f%%")

绘制部分饼图
创建一个由向量 X 组成的饼图,其中各个元素之和小于 1。
using TyPlot
X = [0.19, 0.22, 0.41]
pie(X, autopct = "%.0f%%")
由于元素的总和小于 1,因此 pie 绘制部分饼图。
比较两个饼图
创建包含两年财务数据的向量 y2010 和 y2011。然后创建一个包含值标签的数组。
using TyPlot
y2010 = [50, 0, 100, 95]
y2011 = [65, 22, 97, 120];
labels = ["Investments","Cash","Operations","Sales"]
创建一个 2×1 分块图布局,并在第一个图块中显示 y2010 数据的饼图和图例。然后在第二个图块中显示 y2011 数据的饼图和图例。
ax1 = subplot(2,1,1)
pie(ax1, y2010)
title("2010")
legend(ax1, labels)
ax2 = subplot(2,1,2)
pie(ax2, y2011)
legend(ax2, labels)
title("2011")

绘制具有偏移的分类饼图
绘制一个分类饼图,其中的偏移扇区与类别相对应。
using TyPlot
X = ["North","South","North","East","South","West"]
x_names = ["East", "North", "South", "West"]
x_values =[1, 2, 2, 1]
x_labels = []
amount = sum(x_values)
for i in 1:length(x_names)
value::Int = round(x_values[i]/amount*100)
name = x_names[i] * "(" * string(value) * "%)"
push!(x_labels, name)
end
pie(x_values, labels = x_labels, autopct = "%.0f%%")
现在,使用逻辑向量将相同扇区偏移一定位置。
pie(x_values, labels = x_labels, explode = [0, 0.1, 0.1, 0], autopct = "%.0f%%")

# 输入参数
X - 输入数组向量 | 矩阵
输入向量或矩阵。
如果 X 为数值,则 X 中的所有值必须为有限值。
数据类型: Float16 | Float32 | Float64
ax - 坐标区坐标区对象
坐标区对象。使用 ax 在特定的坐标区而不是当前坐标区 (gca) 中绘制该饼图。
# 名称-值对组参数
指定可选的、以逗号分隔的 Key=Value 对组参数。Key 为参数名称,Value 为对应的值。您可采用任意顺序指定多个名称-值对组参数,如 Key1=Value1,...,KeyN=ValueN 所示。
explode - 偏移扇区数值向量
偏移扇区,指定为数值向量。
如果 X 为数值,则 explode 必须是逻辑向量或数值向量。一个真(非零)值从饼图中心将相应的扇区偏移一定位置。explode 和 X 的大小必须相同。
autopct - 标签选项格式表达式
标签选项,指定为格式表达式。显示 Syslab 以特定格式提供的百分比值。
labels - 图例nothing(默认)| list
为每个楔形提供标签的字符串序列。nothing 的时候默认显示百分比。
显示文本标签
将标签指定为字符向量数组或字符串数组。
当 X 包含数值时,labels 中的元素数必须等于 X 中的元素数。
pctdistance - 距离1.1(默认)| 数值
每个饼图切片的中心与 autopct 生成的文本开头之间的比率。 如果 autopct 为 nothing,则忽略。