Python多Y轴图例

多Y轴图例是数据可视化中常见的一种方式,它可以同时展示多个不同单位或量纲的数据,方便比较和分析。在Python中,使用一些常见的数据可视化库如 Matplotlib Seaborn 可以轻松地实现多Y轴图例。

1. Matplotlib实现多Y轴图例

Matplotlib 是Python中最常用的数据可视化库之一,它提供了丰富的绘图功能。下面是一个使用 Matplotlib 实现多Y轴图例的代码示例:

import numpy as np
import matplotlib.pyplot as plt
# 生成示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建图形和子图对象
fig, ax1 = plt.subplots()
# 绘制第一个Y轴数据
ax1.plot(x, y1, 'r', label='sin(x)')
ax1.set_xlabel('x')
ax1.set_ylabel('sin(x)', color='r')
ax1.tick_params('y', colors='r')
# 创建第二个Y轴对象
ax2 = ax1.twinx()
# 绘制第二个Y轴数据
ax2.plot(x, y2, 'b', label='cos(x)')
ax2.set_ylabel('cos(x)', color='b')
ax2.tick_params('y', colors='b')
# 添加图例
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2)
# 显示图形
plt.show()

上述代码中,我们首先生成了一些示例数据。然后使用plt.subplots()创建了一个图形和一个子图对象。在子图对象上分别绘制了两个不同的Y轴数据,并分别设置了对应的标签和颜色。通过ax1.twinx()方法创建了第二个Y轴对象,并在其上绘制了第二个Y轴数据。最后使用ax1.get_legend_handles_labels()ax2.get_legend_handles_labels()获取图例的句柄和标签,然后使用ax2.legend()方法将两个Y轴的图例合并在一起。

运行上述代码,即可得到如下的多Y轴图例:

![matplotlib_multiple_y_axes.png](

这里的图例中分别标注了sin(x)和cos(x)两条曲线,且分别使用了不同的颜色。

2. Seaborn实现多Y轴图例

Seaborn是基于Matplotlib的另一个数据可视化库,它提供了更高级的绘图接口和更美观的默认风格。下面是一个使用Seaborn实现多Y轴图例的代码示例:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 生成示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建图形和子图对象
fig, ax1 = plt.subplots()
# 绘制第一个Y轴数据
sns.lineplot(x, y1, ax=ax1, color='r', label='sin(x)')
# 创建第二个Y轴对象
ax2 = ax1.twinx()
# 绘制第二个Y轴数据
sns.lineplot(x, y2, ax=ax2, color='b', label='cos(x)')
# 显示图例
ax1.legend(loc='upper right')
ax2.legend(loc='upper left')
# 显示图形
plt.show()

上述代码中,我们使用seaborn.lineplot()方法分别在两个Y轴上绘制了sin(x)和cos(x)两条曲线,并分别设置了对应的颜色和标签。然后使用ax1.legend()ax2.legend()方法分别为两个Y轴添加图例,并设置了图例的位置。

运行上述代码,即可得到如下的多Y轴图例:

![seaborn_multiple_y_axes.png](

这里的图例同样标注了sin(x)和cos(x)两条曲线,且分别使用了不同的颜色。

3. 总结

springboot filter url解码
我们发现,这个注解通过@Import(AutoConfigurationPackages.Registrar.class)给IoC容器中导入了一个组件AutoConfigurationPackages.Registrar 我们点进去发现,这是由连个方法组成的类,如下所示 static class Registrar implements ImportBeanDefinitionRegistra

在容器里程序检测不到当前用户

std::allocator常用于stl中的各种容器。对应的,stl的容器中也提供了相应的内存分配器参数。当需要统计内存的使用或者自定义内存分配时,十分有用。以std::vector为例:// std=c++11 // https://www.cplusplus.com/reference/vector/vector/vector/ template < class T, class Al