如何在 pyplot 图上使用千位分隔符

问题描述 投票:0回答:0

我正在绘制图表,但我的 y 轴上的值上升到 175 000。当然,python 和 pyplot 默认不使用千位分隔符。这些图表必须进入一篇受格式规则约束的文章,因此我使用 rc 库来获得衬线字体并启用乳胶。然而,这些规则还需要一个空格千位分隔符。我正在从数据框中绘制图表,并找到了可以在整个数据框中包含逗号千位分隔符的答案。然后我可以使用 .replace() 将逗号替换为空格。然而,问题是当我的数据框中有千位分隔符时,我的图表将不会显示。内核继续运行,没有任何图形作为输出。

所以我的问题是有没有办法引入空格千位分隔符并用pyplot绘制?最好是一两行代码,我可以将它们应用于整个数据框,而不必一次将它应用于一列,但任何解决方案都将不胜感激。

附件是我的代码。

import numpy as np
import pandas as pd
from matplotlib import pyplot as pp
%matplotlib inline
from matplotlib import rc
rc("text", usetex=True)
rc("font", family="serif")
sketsverhouding = 4 / 5
vol = 5, 5*sketsverhouding
half = 3, 3*sketsverhouding
derde = 2.3, 2.3*sketsverhouding

这里是获取整个dataframe中的逗号分隔符的代码,无法画图

data = pd.read_excel(r"C:\Users\pivde\Desktop\Tuks\nagraads\karakterisering\xrd\sifeksp_filament.xlsx", sheet_name = "python_data")
data = data.applymap(lambda x: f'{x:,d}' if isinstance(x, int) else x)

但是,如果我用这个代替

data = pd.read_excel(r"C:\Users\pivde\Desktop\Tuks\nagraads\karakterisering\xrd\sifeksp_filament.xlsx", sheet_name = "python_data")

我可以正常绘制图表,但它们没有任何千位分隔符。我的绘图功能如下所示,两条线绘制数据。

def skets(y, etiket):
    pp.figure(figsize=half)
    pp.plot(data['2theta'], data[y], 'k-')
    pp.xlabel(r'2$\theta$ [$^\circ$]')
    pp.ylabel('Intensity')
    pp.tight_layout()
    pp.ylim(0, 15000)
    pp.savefig(naam.format(etiket))

naam = 'grafieke/xrd_sifekpsfil_{:03.0f}ldh_pla.svg'
skets('n', 0)
skets('t', 2)

我无法附上包含数据的excel文件,所以我附上了一个简化的数据集,以方便您使用足够的数据来说明这一点。

2theta = [4.998436247,10.63245752,20.27627772,30.37691046,40.62981404,50.83196067,61.08486426,70.01808718]
n = [6090,1387,6762,3178,2865,2121,1354,1243]
t = [6146,2266,8610,4012,3424,2390,1572,1355]
python matplotlib numbers separator
© www.soinside.com 2019 - 2024. All rights reserved.