# scatterhist
带边缘直方图的散点图
# 语法
h = scatterhist(x,y)
h = scatterhist(x,y;Key=Value)
# 说明
h = scatterhist(x,y) 绘制 x 和 y 的散点图并且在散点图的水平和垂直方向分别展示作为随机变量的 x 和 y 的边缘分布的直方图。h 为这三个图的句柄,h[1] 为散点图,h[2] 为水平直方图,h[3] 为竖直直方图。示例
h = scatterhist(x,y;Key=Value) 使用键值参数指定的额外选项绘制图像,比如你可以指定分组变量或者修改绘图选项。示例
# 示例
绘制 scatterhist 图
读取样本数据,取向量 x 为数据矩阵的第一列,这是鸢尾花的萼长数据,向量 y 为第二列,这是同组花的萼宽。
using TyStatistics
include(pkgdir(TyStatistics)*"/data/PlotData/scatterhist/fisheriris.jl")
x = meas[:,1]
y = meas[:,2]
使用散点图和边缘直方图来可视化萼长与萼宽的关系。
scatterhist(x,y)
展示直方图直方的数据提示。当单击直方图的直方时,这样的数据提示就会出现。
该数据提示展示了选中直方的概率密度函数估值以及直方的上下边界。
绘制分组数据
读取样本数据,取向量 x 为数据矩阵的第一列,这是鸢尾花的萼长数据,向量 y 为第二列,这是同组花的萼宽。
using TyStatistics
include(pkgdir(TyStatistics)*"/data/PlotData/scatterhist/fisheriris.jl")
x = meas[:,1]
y = meas[:,2]
使用散点图以及六个核密度图来可视化以种类分组的萼长与萼宽的关系。
scatterhist(x,y,group=species,kernel="on")
该图展示了基于花朵种类的萼长与萼宽的关系。
自定义绘图显示
读取样本数据,取向量 x 为数据矩阵的第一列,这是鸢尾花的萼长数据,向量 y 为第二列,这是同组花的萼宽。
using TyStatistics
include(pkgdir(TyStatistics)*"/data/PlotData/scatterhist/fisheriris.jl")
x = meas[:,1]
y = meas[:,2]
使用散点图以及六个核密度图来可视化以种类分组的三个不同鸢尾花属的萼长与萼宽的关系。自定义绘图显示。
scatterhist(x,y;group=species,kernel="on",location="southeast",direction="out",color=["k", "b", "r"],linestyle=["-", "-.", ":"],linewidth=[2, 2, 2],marker=["+", "o", "d"],markersize=[4, 5, 6])

使用图形句柄自定义绘图
读取样本数据,取向量 x 为数据矩阵的第一列,这是鸢尾花的萼长数据,向量 y 为第二列,这是同组花的萼宽。
using TyStatistics
using TyPlot
include(pkgdir(TyStatistics)*"/data/PlotData/scatterhist/fisheriris.jl")
x = meas[:,1]
y = meas[:,2]
使用图形句柄把边缘直方图替换为箱线图。
h1, h2, h3 = scatterhist(x, y; group=species)
h1_123 = findobj(h1)[2:4]
clr1 = h1_123[1].get_color()
clr2 = h1_123[2].get_color()
clr3 = h1_123[3].get_color()
clr = hcat(clr1, clr2, clr3)'
boxplot(h2, x, species; orientation="horizontal", labels=["", "", ""], colors=clr)
boxplot(h3, y, species; orientation="vertical", labels=["", "", ""], colors=clr)
h3.invert_xaxis()
xlim(h2, collect(xlim(h1)))
ylim(h3, collect(ylim(h1)))
h2.set_xticklabels("")
h3.set_xticklabels("")
hold(h2, "off")
hold(h3, "off")

# 输入参数
x — 样本数据向量
样本数据,指定为向量。数据向量 x 和 y 必须具有相同的长度。
如果 x 或 y 包含 NaN 值,则 scatterhist:
- 生成散点图时移除 x 或者 y 具有 NaN 值的行;
- 生成边缘直方图时分别移除 x 和 y 具有 NaN 值的行。
y — 样本数据向量
样本数据,指定为向量。数据向量 x 和 y 必须具有相同的长度。
如果 x 或 y 包含 NaN 值,则 scatterhist:
- 生成散点图时移除 x 或者 y 具有 NaN 值的行;
- 生成边缘直方图时分别移除 x 和 y 具有 NaN 值的行。
# 键-值参数
实现 Key1=Value1,...,KeyN=ValueN 功能的键-值参数,其中 Key 与 Value 相互对应。键-值参数必须在其余参数以及一个英文百分号以后,但是内部出现顺序不重要。
示例: location="southeast",direction="out" 指定直方图位于散点图的右方与下方,且直方指向散点图外。
nbins — 直方图直方个数正整数 | 向量
直方图直方个数,指定为大于等于二的正整数或者两个这样的正整数组成的向量。如果直方个数指定为正整数,则这是 x 和 y 直方图的直方个数。如果直方个数指定为向量,则第一个数是 x 直方图的直方个数,第二个数是 y 直方图的直方个数。默认情况下,直方个数通过 Scott 公式基于样本标准差计算。
示例:nbins = [5,7]
location — 边缘直方图的位置"SouthWest"(默认) | "SouthEast" | "NorthEast" | "NorthWest"
图像中边缘直方图的位置,指定为下列值之一:
| 值 | 含义 |
|---|---|
| "SouthWest" | 直方图位于散点图的左方与下方。 |
| "SouthEast" | 直方图位于散点图的右方与下方。 |
| "NorthEast" | 直方图位于散点图的右方与上方。 |
| "NorthWest" | 直方图位于散点图的左方与上方。 |
示例:location = "SouthEast"
direction — 边缘直方图的方向"in"(默认) | "out"
边缘直方图的方向,指定为下列值之一:
| 值 | 含义 |
|---|---|
| "in" | 直方图的直方指向散点图。 |
| "out" | 直方图的直方指向散点图的外侧。 |
示例:direction = "out"
group — 分组变量字符串向量 | 字符串向量组成的元组
分组变量,指定为字符串向量或者字符串向量组成的元组。分组变量中每个不同的值都指定了一个组。
例如,如果 Gender 是由 "Male" 和 "Female" 组成的字符串向量,那么你就可以使用 Gender 作为分组变量以绘制基于性别分组的数据。
分组变量的行数必须等于 x 的长度。
示例:group = Gender
plotGroup — 分组绘图指示器true | false
分组绘图指示器,指定为下列值之一:
| 值 | 含义 |
|---|---|
| true | 绘制分组直方图或者分组核密度图。在指定了 group 参数时,该值为默认值。 |
| false | 绘制整个数据集的直方图或核密度图。在不指定 group 参数时,该值为默认值。 |
示例:plotGroup = false
style — 直方图展示风格"bar" | "barstacked" | "step" | "stepfilled"
直方图展示风格,指定为下列值之一:
| 值 | 含义 |
|---|---|
| "bar" | 绘制普通的直方图。这种你指定的分组向量仅包含一个组或者 plotGroup 为 false 时为默认值。 |
| "barstacked" | 自定义不等宽分箱的直方图. |
| "step" | 绘制阶梯图,这种图会展示直方图的轮廓而不填充直方。这在你指定的分组向量包含多于一个组时为默认值。 |
| "stepfilled" | 绘制阶梯图,这种图会填充直方。 |
kernel — 核密度图指示器"off"(默认) | "on" | "overlay"
核密度图指示器,指定为下列值之一:
| 值 | 含义 |
|---|---|
| "off" | 绘制边缘分布直方图。 |
| "on" | 绘制边缘分布核密度图。 |
| "overlay" | 在边缘分布直方图上叠加边缘分布核密度图,与 histfit 相似。 |
bandwidth — 核平滑窗口的宽矩阵
核平滑窗口的宽,指定为 2xK 的矩阵,其中 K 为组数。矩阵的第一行给出了 x 中各组的宽,第二行给出了 y 中各组的宽。默认情况下,scatterhist 基于估计的正态密度寻找最优宽度。指定不同的宽度值会改变结果核密度图的平滑特性。指定的值是生成核密度图时的正态分布的放缩因子。
示例:bandwidth = [0.5 0.2 0.1;0.15 0.25 0.35]
legend — 图例可见指示器true | false
图例可见指示器,指定为下列值之一:
| 值 | 含义 |
|---|---|
| true | 设置图例可见。这在指定了 group 参数时为默认值。 |
| false | 设置图例不可见。这在不指定 group 参数时为默认值。 |
linestyle — 核密度图的线型有效线型 | 有效线型向量
核密度图的线型,指定为有效线型或者有效线型的向量。所有有效线型请参见 plot。默认为实线。使用有效线型向量来为每个组指定不同的线型。当组的总数超过线型的数目时,scatterhist 会在这些值中循环。
示例:linestyle = ["-",":","-."]
linewidth — 核密度图的线宽0.5(默认) | 非负标量 | 向量
核密度图的线宽,指定为非负标量或者非负标量组成的向量。线宽默认为 0.5。使用向量指定不同组的线宽。当组的总数超过线宽的数目时,scatterhist 会在这些值中循环。
示例:linewidth = [0.5,1,2]
color — 每个散点组图的颜色颜色字符串 | RGB 矩阵
每个散点组图的颜色,指定为颜色字符串或者三列 RGB 矩阵。如果使用 RGB 矩阵指定颜色,则该矩阵每个元素必须在零到一的闭区间内,矩阵的每一行为一个组的 RGB 三元组。矩阵的三列分别表示 R 值、G 值与 B 值。当组的总数超过指定颜色的数目时,scatterhist 会在这些值中循环。
下表列出了预定义的颜色以及他们对应的 RGB 三元组的值。
| 选项 | 描述 | 等价的 RGB 三元组 |
|---|---|---|
| "red" 或 "r" | 红色 | [1 0 0] |
| "green" 或 "g" | 绿色 | [0 1 0] |
| "blue" 或 "b" | 蓝色 | [0 0 1] |
| "yellow" 或 "y" | 黄色 | [1 1 0] |
| "magenta" 或 "m" | 紫红色 | [1 0 1] |
| "cyan" 或 "c" | 青色 | [0 1 1] |
| "white" 或 "w" | 白色 | [1 1 1] |
| "black" 或 "k" | 黑色 | [0 0 0] |
示例:color = "kcm"
示例:color = [0.5 0 1;0 0.5 0.5]
marker — 每个散点组图的标记"o"(默认) | 字符串
每个散点组图的标记,指定为一个或更多有效标记组成的字符串。所有有效标记请参见 plot。默认值为 "o",用圆做标记。当组的总数超过标记的个数时,scatterhist 在这些值中循环。
示例:marker = "+do"
markersize — 每个散点组图的标记大小6(默认) | 非负标量 | 向量
每个组图的标记大小,指定为非负标量或非负标量组成的向量。当组的总数超过标记大小的个数时,scatterhist 在在这些值中循环。
示例:markersize = 10
xname — 散点图的横轴标签"x"(默认) | 字符串
散点图的横轴标签,指定为字符串,默认为 "x"。
示例:xname = "time"
yname — 散点图的纵轴标签"y"(默认) | 字符串
散点图的纵轴标签,指定为字符串,默认为 "y"。
示例:yname = "production"
# 输出参数
h — 图窗句柄元组
三张图的图窗句柄,以元组形式返回。该三元组分别为散点图、沿平行坐标轴的直方图以及沿垂直坐标轴的直方图的图窗句柄。