簡體   English   中英

如何在python或matplotlib中繪制非常小的值的條形圖?

[英]How to draw bar charts for very small values in python or 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)的圖表顏色。

在此處輸入圖片說明

如何修改代碼以可視化圖表中較小的值(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()

在此處輸入圖片說明

更新:要更改ScalarFormatter標簽的格式,可以使用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()

在此處輸入圖片說明

您可以像這樣創建2個y軸:

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
width = 0.2
df['A'].plot(kind='bar', color='green', ax=ax1, width=width, position=1, label = 'A')
df['B'].plot(kind='bar', color='blue', ax=ax2, width=width, position=0, label = 'B')

ax1.set_ylabel('A')
ax2.set_ylabel('B')

# legend
h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax1.legend(h1+h2, l1+l2, loc=2)

plt.show()

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM