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

标签 python python-3.x matplotlib

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

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()

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

enter image description here

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

最佳答案

显示不同数量级数据的常用方法是 对 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()

enter image description here

更新: 要更改 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()

enter image description here

关于python - 如何在 python 或 matplotlib 中为非常小的值绘制条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53569576/

相关文章:

python - 执行最佳循环排序知道最后的顺序

python - 如何使用 python-click 构建类似 kubectl 的 CLI?

python - 为什么会出现两个而不是一个图形对象?

python - 从 matplotlib 中的颜色图中获取单个颜色

python - 刷新 Flask 模板 matplotlib 图形后出现错误

java - 相当于Java中python的shelve模块

python - 在列表中搜索字符或字符串(如网站上的查找功能)

python - 如何在 Odoo 中预先获取表单中的默认字段值?

python-3.x - 使用 Python 3 和示例解析 HTML 的最佳库?

linux - 从 IRT 可执行文件中读取数据