matplotlib 无法在3D图中使轴成为对数

piwo6bdm  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(110)

我正在尝试使用matplotlibjupyter-notebook中绘制3D图。我使用的是kaggle的数据集。
架构如下
| LotArea|销售价格|YrSold|泳池区|
| - -----|- -----|- -----|- -----|
| 八四五○| 208500|二零零八年|0|
| 九千六百|181500|二零零七年|0|
| ......这是什么?|......这是什么?|......这是什么?|......这是什么?|
当我用线性轴绘图时,一切都没问题:

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 15))
ax = plt.axes(projection='3d')

area_data = dataset_chosen["LotArea"]
price_data = dataset_chosen["SalePrice"]
year_data = dataset_chosen["YrSold"]

cmhot = plt.get_cmap("hot")

ax.scatter3D(xs=area_data, ys=price_data, zs=year_data, c=dataset_chosen["PoolArea"])

#ax.set_xscale("log")

ax.set_xlabel("Area")
ax.set_ylabel("Price")
ax.set_zlabel("Year")

plt.show()

x1c 0d1x当我尝试使x标度为对数(取消注解#ax.set_xscale("log"))时,图看起来不像图。

如何使X刻度对数化?

aiazj4mn

aiazj4mn1#

如果你在这里检查,有一个关于同样的讨论。这是3D图内的限制/错误。如前所述,有一个变通办法...基本上,你需要手动进行缩放。下面是更新后的代码。希望这就是你要找的...注意,我使用log 10,因为数字对齐得很好。

dataset_chosen=pd.read_csv('train.csv')
fig = plt.figure(figsize=(10, 15))
ax = plt.axes(projection='3d')

area_data = np.log10(dataset_chosen["LotArea"])  ## Changed to LOG-10
price_data = dataset_chosen["SalePrice"]
year_data = dataset_chosen["YrSold"]

cmhot = plt.get_cmap("hot")

ax.scatter3D(xs=area_data, ys=price_data, zs=year_data, c=dataset_chosen["PoolArea"])

## Set the xticks and xticklables to what you want it to be...
xticks=[100,1000,10000,100000]
ax.set_xticks(np.log10(xticks))
ax.set_xticklabels(xticks)

#ax.set_xscale('log')
ax.set_xlabel("Area")
ax.set_ylabel("Price")
ax.set_zlabel("Year")

plt.show()

相关问题