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