我正在绘制图表,但是y轴上的值达到了175000。当然,python和pyplot默认不使用千位分隔符。图表必须按照格式规则放入文章中。因此我使用 rc 库来拥有一个serif字体,并且允许使用latex。2但是规则也要求一个千位分隔符。我正在从数据框中绘制图表,并找到了答案,我可以在整个数据框中包含逗号千位分隔符。然后我可以使用.replace()将逗号替换为空格。但问题是,当我的 Dataframe 中有千位分隔符时,我的图表不会显示。内核只是继续运行,没有任何图表作为输出。
所以我的问题是,有没有办法引入空格千位分隔符,然后用Pyplot将其绘制出来?最好是这样的一行或两行代码,我可以将其应用于整个 Dataframe ,而不是必须一次应用于一列,但任何解决方案都将受到赞赏。
附件是我的代码。
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
下面是用于获取整个数据框中逗号分隔符的代码,它不能用图形表示。
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]
1条答案
按热度按时间k5hmc34c1#
一种方法是使用
format()
函数添加,
,然后使用replace
将其更改为空格。我已经在下面的代码中完成了这一操作,它将独立运行。希望这是您正在寻找的...输出图