我一直试图在pyplot中压制科学记数法几个小时了.在尝试多种解决方案但没有成功之后,我想要一些帮助.
plt.plot(range(2003,2012,1),range(200300,201200,100))
# several solutions from other questions have not worked, including
# plt.ticklabel_format(style='sci', axis='x', scilimits=(-1000000,1000000))
# ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.show()
Run Code Online (Sandbox Code Playgroud)

提前致谢.
当我尝试对一个数字足够大的范围进行绘图时,我会得到一个相对于所有刻度相对偏移的轴.例如:
plot([1000, 1001, 1002], [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
我在横坐标轴上得到这些刻度:
0.0 0.5 1.0 1.5 2.0
+1e3
Run Code Online (Sandbox Code Playgroud)
问题是如何删除+1e3和获取:
1000.0 1000.5 1001.0 1001.5 1002.0
Run Code Online (Sandbox Code Playgroud) 这个问题下面的简单示例我无法解决.
NB其他一些Seaborn绘图方法似乎有压制指数形式的论据,但似乎没有factorplots.我尝试了一些Matplotlib解决方案,包括在这个类似问题中提出的解决方案但没有工作.这也不是这个问题的愚蠢行为.我经常使用factorplots,理想情况下想找到一个合适的解决方案,而不是一个变通方法.
data = {'reports': [4, 24, 31, 2, 3],'coverage': [35050800, 54899767, 57890789, 62890798, 70897871]}
df = pd.DataFrame(data)
df
Run Code Online (Sandbox Code Playgroud)
生成此数据框:
coverage reports
0 35050800 4
1 54899767 24
2 57890789 31
3 62890798 2
4 70897871 3
Run Code Online (Sandbox Code Playgroud)
然后这个Seaborn代码:
sns.factorplot(y="coverage", x="reports", kind='bar', data=df, label="Total")
Run Code Online (Sandbox Code Playgroud)
产生这个情节:
有没有办法让y轴根据coverage值显示适当的数字刻度?
我正在编写一个 python 2.7 脚本,它在循环中生成多个 matplotlib 图。
import matplotlib.pyplot as plt
import numpy as np
Run Code Online (Sandbox Code Playgroud)
在这里,我缩放数据,所以第一个点是 100
scalefac = 100/float(sdata[0])
for dat in range(len(sdata)):
sdata[dat] = float(sdata[dat])*scalefac
Run Code Online (Sandbox Code Playgroud)
然后绘制它。
y = sdata
x = np.arange(0, len(sdates))
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
aaa = tuple(sdates)
ax.scatter(x,y)
ax.plot(x,y)
plt.xticks(x,aaa)
plt.xlabel('date of run (mm/dd/yy)')
plt.ylabel('power % of baseline')
plt.title('Power Estimation Over Time')
plt.grid(True)
plt.savefig("dump/graph.%s.png" % str(dirlist[d]))
plt.close(fig)
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但仅当 y 数据不太靠近时。例如,当 y 为 [100, 95] 或 [100, 100, 110] 时,y 轴具有正确的单位并且点位于正确的位置。当 y 为 …
使用下面的代码生成一个图,其中y轴为0.0到2.5 1e7.如何避免使用1e7的值?
import pandas as pd
import matplotlib.pyplot as plt
a = {'Test1': {1: 21867186, 4: 20145576, 10: 18018537},
'Test2': {1: 23256313, 4: 21668216, 10: 19795367}}
d = pd.DataFrame(a).T
#print d
f = plt.figure()
plt.title('Title here!', color='black')
d.plot(kind='bar', ax=f.gca())
plt.show()
Run Code Online (Sandbox Code Playgroud) 我读过这里(如何防止数字在Python matplotlib图中更改为指数形式)和这里(Matplotlib:在对数图中禁用十的幂)并尝试了他们的解决方案但无济于事。
如何将 y 轴转换为显示普通十进制数字而不是科学记数法?请注意,这是 Python 3.5.2。
这是我的代码:
#Imports:
import matplotlib.pyplot as plt
possible_chars = 94
max_length = 8
pw_possibilities = []
for num_chars in range(1, max_length+1):
pw_possibilities.append(possible_chars**num_chars)
x = range(1, max_length+1)
y = pw_possibilities
#plot
plt.figure()
plt.semilogy(x, y, 'o-')
plt.xlabel("num chars in password")
plt.ylabel("number of password possibilities")
plt.title("password (PW) possibilities verses # chars in PW")
plt.show()
Run Code Online (Sandbox Code Playgroud) matplotlib ×6
python ×6
axis ×1
numpy ×1
pandas ×1
plot ×1
python-2.7 ×1
python-3.x ×1
seaborn ×1