matplotlib 3D 图形坐标轴纵横比

0 投票
1 回答
13 浏览
提问于 2025-04-14 16:00

我正在绘制一些三维数据,结果图形总是生成一个三维立方体。这是合理的,但我想把其中一个轴延长一点(也就是调整长宽比),这样就能得到一个三维长方体,而不是立方体。

比如,下面这个图形是完全可以用的——我该怎么做才能让y轴在视觉上比其他轴更长呢?

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np


N = 1000

bm = pd.DataFrame(
    index=pd.bdate_range(start='2012-01-01', periods=N, freq='B'), 
    data={x: np.random.randn(N) for x in range(1, 11)}
)

# Simulate some zeros
bm = pd.DataFrame(index=bm.index, columns=bm.columns, data=np.where(np.abs(bm.values) < 0.02, 0, bm.values))

# Set zeros to Nan so that I don't plot them
bm = bm.replace({0: np.nan})

# unstack dataframe
flat_bm = bm.reset_index(drop=True).unstack()  # DROP DATES AND REPLACE WITH INT
x = flat_bm.index.get_level_values(0)
y = flat_bm.index.get_level_values(1)
z = flat_bm.values


# Set up plot
fig = plt.figure(figsize = (15,10))
ax = plt.axes(projection ='3d')

# plotting
ax.scatter(x, y, z, '.', c=flat_bm.values, cmap='Reds')

1 个回答

撰写回答