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

Python绘制比特币对数刻度图表:如何将Y轴显示为线性数值?

解决方法

要实现对数刻度绘图但Y轴显示线性数值(如100、1000),只需在设置对数刻度后,为Y轴配置ScalarFormatter并关闭科学计数法即可。你已导入ScalarFormatter,直接添加关键代码即可:

# 配置Y轴格式化器
formatter = ScalarFormatter()
formatter.set_scientific(False)  # 禁用科学计数法
formatter.set_useOffset(False)   # 禁用偏移量显示
plt.gca().yaxis.set_major_formatter(formatter)

修改后的完整代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np 
from cryptocmd import CmcScraper
from math import e
from matplotlib.ticker import ScalarFormatter

# -------------IMPORT THE DATA----------------
btc_data = CmcScraper("BTC", "28-04-2012", "27-11-2022", True, True, "USD")
# Create a Dataframe
df = btc_data.get_dataframe()
#Set the index as Date instead of numerical value
df = df.set_index(pd.DatetimeIndex(df["Date"].values))

#Plot the Data 
plt.style.use('fivethirtyeight') 
plt.figure(figsize =(20, 10))
plt.title("Bitcoin Price", fontsize=18)
plt.yscale("log")
plt.plot(df["Close"])
plt.xlabel("Date", fontsize=15)
plt.ylabel("Price", fontsize=15)

# 关键:将Y轴指数刻度转换为线性数值
formatter = ScalarFormatter()
formatter.set_scientific(False)
formatter.set_useOffset(False)
plt.gca().yaxis.set_major_formatter(formatter)

plt.show()

原理说明

  • ScalarFormatter会自动映射对数刻度对应的实际价格数值,把10^2转为100、10^3转为1000;
  • set_scientific(False)强制关闭科学计数法显示;
  • set_useOffset(False)避免数值被简化为偏移形式(如1e3)。

内容的提问来源于stack exchange,提问作者Jeronimo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:25:35