x 轴的 matplotlib 分组值

matplotlib grouping values of x axis

我在 matplotlib+seaborn 中有一个非常奇怪的行为。

请不要介意美学特征!

我有一个 .csv 文件,其中的行值非常小

csv的读取是pandas:

csvdata = pd.read_csv('csv.csv', sep=';', header=None, index_col=0)
idx = np.arange(1, 33)
y = csvdata.iloc[4,idx]
x = csvdata.iloc[0,idx]

该文件的每一行都是我的 'y',其值为:

0.000001479;0.000001562;1.47E-06;1.39E-06;1.35E-06;1.36E-06;1.33E-06;1.30E-06;1.25E-06;1.26E-06;0.000001249;1.23E-06;1.21E-06;1.19E-06;1.17E-06;1.18E-06;1.17E-06;1.12E-06;1.11E-06;1.10E-06;1.11E-06;1.10E-06;0.000001073;0.000001055;1.05E-06;1.05E-06;1.03E-06;1.02E-06;1.02E-06;1.01E-06;1.01E-06;1.01E-06

一个 'x' 是:

0.223214286;0.446428571;0.669642857;1;1;1;2;2;2;2;2;3;3;3;3;4;4;4;4;4;5;5;5;5;6;6;6;6;6;7;7;7

当我尝试在 matplotlib 中绘制该行时,它给了我:

正如你所看到的,该图对很多值进行了分组。我试图设置 xaxis 值以使其正确,所以我做了:

fig = sb.plt.figure(figsize=(12, 5))
ax = fig.add_subplot(111)
ax.plot(x, y, '-o', color='orange', linewidth=3)

fmt = tkr.FormatStrFormatter('%1.1E')
ax.yaxis.set_major_formatter(fmt)
fmt = tkr.FormatStrFormatter('%1.2f')
ax.xaxis.set_major_formatter(fmt)

ax.xaxis.set_major_locator(tkr.MultipleLocator(.22))

结果:

而我想要的是(从Excel导出):

知道是什么导致了这个问题吗?在我看来,它应该很简单:plot(x,y) 并且 matplotlib 应该识别两个轴上的所有值...

我是不是漏掉了什么?

提前谢谢大家!

经过@tom 和@tmoreau 的一些建议,我发现问题出在值 o x 上!

谢谢大家!

csv的数据是从excel导出的,如果"Number format"没有精度,它会将数据导出为截断值!

修复后,我有 x 值:

0.22321428571428600000;0.44642857142857100000;0.66964285714285700000;0.89285714285714300000;1.11607142857143000000;1.33928571428571000000;1.56250000000000000000;1.78571428571429000000;2.00892857142857000000;2.23214285714286000000;2.45535714285714000000;2.67857142857143000000;2.90178571428571000000;3.12500000000000000000;3.34821428571428000000;3.57142857142857000000;3.79464285714286000000;4.01785714285714000000;4.24107142857143000000;4.46428571428571000000;4.68750000000000000000;4.91071428571428000000;5.13392857142857000000;5.35714285714286000000;5.58035714285714000000;5.80357142857143000000;6.02678571428571000000;6.25000000000000000000;6.47321428571428000000;6.69642857142857000000;6.91964285714285000000;7.14285714285714000000

而且情节很有魅力: