在matplotlib中相对于另一个数据集在x和y轴上缩放数据集?

uyhoqukh  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(89)

我试图缩放两组不同的数据,使其在视觉上等效。

  • 绿色 * 数据集具有极端Y值和明显更多的数据点。因此,* 橙子 * 数据集持平且较短。

有哪些函数允许我将它们等效地缩放?

*未来观众:“MinMax归一化”是响应中提到的一种方法。

oknrviil

oknrviil1#

您可以通过压缩0和1之间的值来实现这一点。

import numpy as np
import matplotlib.pyplot as plt

# Define the green and orange data sets
green_data = np.random.normal(50, 10, 100)
orange_data = np.random.normal(25, 5, 10)

# Normalize the data sets using min-max scaling
green_data_normalized = (green_data - np.min(green_data)) / (np.max(green_data) - np.min(green_data))
orange_data_normalized = (orange_data - np.min(orange_data)) / (np.max(orange_data) - np.min(orange_data))

# Plot the normalized data sets
plt.plot(green_data_normalized, label='Green Data')
plt.plot(orange_data_normalized, label='Orange Data')
plt.legend()
plt.show()

编辑:如果你想让橙子值与绿色值具有相同的x宽度,你可以在每个点之间画一条直线,并使用中点来计算出应该在中间的数据点。这将通过创建更多的数据点来加宽线条,numpy内置了np.interpinterpolate 的缩写)。

import numpy as np
import matplotlib.pyplot as plt

# Define the green and orange data sets
green_data = np.random.normal(50, 10, 100)
orange_data = np.random.normal(25, 5, 10)

# Define the x-values for the original and extended orange data
x_orange_original = np.linspace(0, 1, len(orange_data))
x_orange_extended = np.linspace(0, 1, len(green_data))

# Interpolate the orange data to extend it
orange_data_extended = np.interp(x_orange_extended, x_orange_original, orange_data)

# Normalize the data sets using min-max scaling
green_data_normalized = (green_data - np.min(green_data)) / (np.max(green_data) - np.min(green_data))
orange_data_normalized = (orange_data_extended - np.min(orange_data_extended)) / (np.max(orange_data_extended) - np.min(orange_data_extended))

# Plot the normalized data sets
plt.plot(green_data_normalized, label='Green Data')
plt.plot(orange_data_normalized, label='Orange Data')
plt.legend()
plt.show()

相关问题