You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在matplotlib 3D绘图中设置X轴为对数刻度?

解决Matplotlib 3D散点图X轴对数刻度异常问题

原因说明

Matplotlib旧版本对3D坐标轴的对数刻度渲染支持不完善,直接调用ax.set_xscale("log")会导致显示异常。

解决方案

方案1:升级Matplotlib到新版本

Matplotlib 3.4及以上版本修复了3D对数轴的显示问题,升级后可直接使用原有代码:

pip install --upgrade matplotlib

升级后取消#ax.set_xscale("log")的注释即可正常显示。

方案2:手动模拟对数刻度(兼容旧版本)

如果无法升级,可通过对数据取对数后手动设置刻度标签来实现效果:

import matplotlib.pyplot as plt
import numpy as np

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

# 确保面积数据无0值,避免对数计算报错
dataset_chosen = dataset_chosen[dataset_chosen["LotArea"] > 0]

area_data = dataset_chosen["LotArea"]
# 对面积数据取10为底的对数
log_area = np.log10(area_data)
price_data = dataset_chosen["SalePrice"]
year_data = dataset_chosen["YrSold"]

cmhot = plt.get_cmap("hot")

# 使用对数转换后的数据绘制散点图
ax.scatter3D(xs=log_area, ys=price_data, zs=year_data, c=dataset_chosen["PoolArea"])

# 设置X轴刻度与对应原始数值标签
log_ticks = [3, 4, 5]  # 对应原始数据1000、10000、100000
ax.set_xticks(log_ticks)
ax.set_xticklabels(["1000", "10000", "100000"])

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

plt.show()

内容的提问来源于stack exchange,提问作者Георгий Гуминов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:07:47