我正在尝试使用math.log(1 + x)而不是通常的“log”缩放选项来缩放绘图的x轴,并且我查看了一些自定义缩放示例,但我可以'让我的工作!这是我的MWE:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame()
df['score'] = np.random.randint(0,100,1000)
fig, ax = plt.subplots(1,1)
df.boxplot(column='score', ax=ax)
q1 = df.quantile(0.25)
q3 = df.quantile(0.75)
ax.scatter(1, q1, c='k', label='Q1')
ax.text(1.1, q1, "Q1 = {0}".format(q1['score']))
ax.scatter(1, q3, c='k', label='Q3')
ax.text(1.1, q3, "Q3 = {0}".format(q3['score']))
fig.show()
答案 0 :(得分:3)
比例由两个Transform类组成,每个类都需要提供transform_non_affine
方法。一个类需要从数据转换为显示坐标,这将是log(a+1)
,另一个是反向的,需要从显示转换为数据坐标,在这种情况下是exp(a)-1
。
这些方法需要处理numpy数组,因此它们应该使用相应的numpy函数而不是数学包中的函数。
class CustomTransform(mtransforms.Transform):
....
def transform_non_affine(self, a):
return np.log(1+a)
class InvertedCustomTransform(mtransforms.Transform):
....
def transform_non_affine(self, a):
return np.exp(a)-1