我在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应该识别两个轴中的所有值...
我错过了什么吗?
事先,谢谢大家!
答案 0 :(得分:1)
在@tom和@tmoreau的一些建议之后,我看到问题出现在值o x!
谢谢你们!
csv的数据是从excel导出的,如果“数字格式”没有精度,它会将数据导出为截断值!
修复后,我有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
情节就像一个魅力: