我想针对一列绘制数据框的两列。这些列中的值范围很广。
data = {'A': [ -0.9, -0.5, -0.3, -0.1, 0, 0.2, 0.4, 0.5, 0.8, 0.9,], 'B': [0, 0, 17, 59, 243, 6777, 35531, 909876, 3, 8], 'C': [7312, 22434, 10787, 4576, 25, 0, 5, 12, 0, 32]}
[我在示例中将数字按顺序排列,以表明 B 的值相对于 A 的值,C 的值相对于 C 的值,但它们不一定如此。]
df = pd.DataFrame(data)
df.plot(x='A', y='B', kind='line')
df.plot(x='A', y='C', kind='line')
由于数字的范围很大,我无法清楚地看到较小的数字。我尝试使用日志数字,但因为有零,所以我无法做到这一点。
在单个图表上绘制这些数据并查看 B 和 C 值与 A 值之间明显差异的最佳方法是什么? 我试图在这里找到一种模式,如示例所示,如果 A <0 C values are high and if A >0 B 值很高。
如果您不需要列共享共同的比例,您可以考虑使用两个轴,一个用于“B”列,一个用于使用 twinx() 的“C”列。 这将使您能够独立控制每个列的比例并使每列内的差异更加明显。 例如:
import pandas as pd
from matplotlib import pyplot as plt
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(df.A, df.C, color = "tab:orange")
ax1.set_xlabel("A")
ax1.set_ylabel("C")
ax2.plot(df.A, df.B, color = "tab:blue")
ax2.set_ylabel("B")