如何在 python 或 matplotlib 中绘制非常小的值的条形图?

use*_*109 4 python matplotlib python-3.x

我使用以下代码绘制了非常小的值的比较条形图,

import pandas as pd
import matplotlib.pyplot as plt

data = [[ 0.00790019035339353, 0.00002112],
    [0.0107705593109131, 0.0000328540802001953],
    [0.0507792949676514, 0.0000541210174560547]]

df = pd.DataFrame(data, columns=['A', 'B'])
df.plot.bar()

plt.bar(df['A'], df['B'])
plt.show()
Run Code Online (Sandbox Code Playgroud)

由于值非常小,我无法可视化图表中较小值(例如 0.00002112)(“B”列)的图表颜色。

在此输入图像描述

如何修改代码以可视化图表中较小的值(B 列)颜色?谢谢..

Luc*_*osh 5

显示不同数量级数据的常见方法是对 y 轴使用对数缩放。以下使用以 10 为底的对数,但也可以选择其他底数。

import pandas as pd
import matplotlib.pyplot as plt

data = [[ 0.00790019035339353, 0.00002112],
        [0.0107705593109131, 0.0000328540802001953],
        [0.0507792949676514, 0.0000541210174560547]]

df = pd.DataFrame(data, columns=['A', 'B'])
df.plot.bar()

plt.yscale("log")
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新:要更改 yaxis 标签的格式, ScalarFormatter可以使用以下实例:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter

data = [[ 0.00790019035339353, 0.00002112],
        [0.0107705593109131, 0.0000328540802001953],
        [0.0507792949676514, 0.0000541210174560547]]

df = pd.DataFrame(data, columns=['A', 'B'])
df.plot.bar()

plt.yscale("log")
plt.gca().yaxis.set_major_formatter(ScalarFormatter())
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述