2026a

# yyaxis


创建具有两个 y 轴的图

函数库: TyPlot

# 语法

yyaxis("left")
yyaxis("right")
___ = yyaxis(ax,___)

# 说明

yyaxis("left") 激活当前坐标区中与左侧 y 轴关联的一侧。后续图形命令的目标为左侧。如果当前坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。如果没有坐标区,此命令将首先创建坐标区。示例


yyaxis("right") 激活当前坐标区中与右侧 y 轴关联的一侧。后续图形命令的目标为右侧。


yyaxis(ax,___) 指定 ax 坐标区(而不是当前坐标区)的活动侧。如果坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。指定坐标区作为第一个输入参数。使用双引号将 "left" 和 "right" 引起来。示例

# 示例

绘制带有两个 y 轴的数据图

创建左右两侧都有 y 轴的坐标区。基于左侧 y 轴绘制一组数据的图。然后使用 yyaxis("right") 激活右侧,使后续图形函数作用于该侧。基于右侧 y 轴绘制第二组数据的图,并为右侧 y 轴设置范围。

using TyPlot
x = LinRange(0, 10, 100);
y = sin.(3 .* x);
yyaxis("left");
plot(x, y)

z = sin.(3 * x) .* exp.(0.5 * x);
yyaxis("right");
plot(x, z)
ylim([-150 150])
修改两个 y 轴的颜色

绘制带有两个 y 轴的数据图。当前激活轴为右侧 y 轴,使用 plt_set 函数设置右侧 y 轴的颜色。然后使用 yyaxis("left") 激活左侧 y 轴,修改左侧 y 轴的颜色。

using TyPlot
x = LinRange(0, 10, 100);
y = sin.(3 .* x);
yyaxis("left");
plot(x, y; color="red")
ylabel("sin(3x)")

z = sin.(3 * x) .* exp.(0.5 * x);
yyaxis("right");
plot(x, z; color="blue")
ylabel("sin(3x)*exp(0.5*x)")

plt_set(gca(); ycolor="blue")
yyaxis("left")
plt_set(gca(); ycolor="red")
为每一侧添加标题和轴标签

导入 "0-data.jl" 文件,创建具有两个 y 轴的图,并为每一侧添加标题和轴标签。

从示例文件 "0-data.jl" 加载矩阵 hwydata。基于左侧 y 轴和 hwydata 中的第五列数据创建一个散点图。添加标题和轴标签。

using TyPlot
pkg_dir = pkgdir(TyPlot)
source_path = pkg_dir * "/examples/格式和注释/yyaxis/0-data.jl"
include(source_path)
ind = 1:51;
drivers = hwydata[:, 5];
yyaxis("left")
scatter(ind, drivers)
title("Highway Data")
xlabel("States")
ylabel("Licensed Drivers (thousands)")

基于右侧 y 轴和 hwydata 中的第七列数据创建第二个散点图。然后为右侧 y 轴添加标签。

pop = hwydata[:, 7];
yyaxis("right")
scatter(ind, pop)
ylabel("Vehicle Miles Traveled (millions)")
tightlayout()
在每一侧绘制多组数据

使用 hold("on") 命令基于左侧 y 轴绘制两个线条。

using TyPlot
x = LinRange(0, 10, 100);
yl1 = sin.(x);
yl2 = sin.(x ./ 2);
yyaxis("left")
plot(x, yl1)
hold("on")
plot(x, yl2)
hold("off")

基于右侧 y 轴绘制两个线条。hold 命令同时影响左侧和右侧 y 轴,因此您不需要再次发出此命令。完成绘图后,关闭 hold。

yr1 = x;
yr2 = x .^ 2;
yyaxis("right")
hold("on")
plot(x, yr1)
plot(x, yr2)
hold("off")

通过激活左侧并使用 cla 命令来清除左侧。

yyaxis("left");
cla()
控制每侧的颜色

通过将色序设置为您想使用的两种颜色,为坐标区的每侧指定颜色方案。使用 colororder 函数设置色序。然后,基于左侧 y 轴和右侧 y 轴分别绘制两个线条。添加一个图例。

using TyPlot
colororder(["b","m"])

yyaxis("left");
y = [1 2; 3 4];
plot(y)

yyaxis("right");
z = [4 3; 2 1];
plot(z)
legend()
控制单个绘图的颜色

通过设置坐标区每侧的色序来控制各个绘图颜色。

基于左侧坐标轴绘制三组条形图。通过将左侧的色序设置为默认色序,为每个条形序列设置不同的颜色。

using TyPlot
yyaxis("left")
bar([8 1 6; 3 5 7; 4 9 2]);
colororder("default")

基于右侧坐标轴绘制三个散点图。通过将色序设置为一个包含颜色名称的数组,为每个散点图使用不同颜色。您也可以使用 RGB 三元组矩阵指定颜色。然后,添加一个图例。

yyaxis("right")
scatter([1 2 3],[2 5 2], filled = true)
hold("on")
scatter([1 2 3],[3 4 1], filled = true)
scatter([1 2 3],[4 2 4], filled = true)
hold("off")
colororder(["r","b","c"])
legend()
为特定坐标区添加第二个 y 轴

调用 subplot 函数以创建一个 2×1 分块图布局和一个坐标区对象,并将该对象返回为 ax1。通过指定 ax1 作为 yyaxis 的第一个输入,在顶部坐标区中添加第二个 y 轴。如果不指定坐标区,yyaxis 将向当前坐标区添加第二个 y 轴。

using TyPlot
x = LinRange(1, 10, 100);
ax1 = subplot(2, 1, 1)
ax2 = subplot(2, 1, 2)

yyaxis(ax1, "left")
plot(ax1, x, sin.(x))
yyaxis(ax1, "right")
plot(ax1, x, exp.(x))

plot(ax2, 1:10)

# 输入参数

ax - 目标坐标区
Axes 对象 | Axes 对象的数组

目标坐标区,指定为 Axes 对象或 Axes 对象数组。

如果您不指定 Axes 对象,则 yyaxis 使用当前坐标区。

left - 左轴坐标区

激活当前坐标区中与左侧 y 轴关联的一侧。后续图形命令的目标为左侧。如果当前坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。如果没有坐标区,此命令将首先创建坐标区。

right - 右轴坐标区

激活当前坐标区中与右侧 y 轴关联的一侧。后续图形命令的目标为右侧。如果当前坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。如果没有坐标区,此命令将首先创建坐标区。

# 另请参阅

bar | cla | hold | plot | stairs | stem