如何在python图表中绘制小值?

2024-09-27 19:24:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用matplotlib.pyplot从csv文件中绘制条形图。图形绘制成功。 我正在X轴上绘制一些值。但是,例如,当我有以下数据时:

A = 10
B = 2000,000 

条形图不会显示在图形上,因为其值太小。我需要展示一个酒吧,即使它太小,我该怎么办? 我应该用什么方法更改其值

我使用了以下方法:

plt.minorticks_on()
plt.grid(axis='x')
plt.grid(which='minor',axis='x',linestyle=':',linewidth=0.6)

我看了前面的问题 How to draw bar charts for very small values in python or matplotlib?

我不能使用:

plt.xscale("log")

因为我希望x轴包含以毫秒为单位的时间

Graph Example

图表显示,由于其值太小,所以没有条形图


Tags: 文件csv数据方法图形matplotlib绘制plt
1条回答
网友
1楼 · 发布于 2024-09-27 19:24:33

这是具有对数刻度的版本

a = 2e6
b = 1e1
c = 2e3
data = [a,b,c]
y = np.arange(len(data))
fig, ax = plt.subplots()
ax.barh(y,data)
ax.set_xlabel('This is time in ms, still ms, regardless of log scale')
ax.xaxis.grid()
ax.set_yticks(y)
ax.set_yticklabels(['A', 'B', 'C'])

for i in range(len(data)):
    ax.text(data[i], y[i]-0.1, f'{int(data[i])}', rotation=90)

ax.set_xscale('log')

输出:

enter image description here

注释掉最后一行,然后得到线性刻度

enter image description here

没有日志,你永远看不到另外两个

忘记10,即使2000年也看不见2e3:2e61:1000>;想象一下1cm中的10m。即使是{}中的{}也几乎看不见

相关问题 更多 >

    热门问题