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
相关产品推荐
相关产品推荐

