2015-09-25 1 views
1

Я хотел бы построить два значения x = [0, 10,20,50,100] и y=[1,2,3,10,100] с использованием pylab. Я хочу сохранить расстояние оси x в форме журнала. Но я хочу отмечать значения x i'e на 10, 20, 50, 100 и печатать их, как это не в виде 10e1 или 10e2. Я делаю это следующим образом:pyplot: построение графика по оси x в интервале шкалы шкалы, но не маркировка его в экспоненциальной форме

import matplotlib.pylab as plt 
plt.xscale('log') 
plt.plot(x, y) 
plt.xticks(x) 
plt.grid() 

Но оно сохраняет значения в виде 10e1, 10e2.

Не могли бы вы помочь мне?

ответ

3

Я думаю, что вы хотите изменить major_formatter оси x?

import matplotlib.pylab as plt 
import numpy as np 
from matplotlib.ticker import ScalarFormatter 

x = [0, 10,20,50,100] 
y=[1,2,3,10,100] 

plt.plot(x, y) 
plt.xscale('log') 
plt.grid() 

ax = plt.gca() 
ax.set_xticks(x[1:]) # note that with a log axis, you can't have x = 0 so that value isn't plotted. 
ax.xaxis.set_major_formatter(ScalarFormatter()) 

plt.show() 

scalar_formatter

1

Следующая

import matplotlib.pyplot as plt 

x = [0,10,20,50,100] 
y = [1,2,3,10,100] 

f,ax = plt.subplots() 
ax.plot(x,y) 
ax.set_xscale('log') 
ax.set_xticks(x) 
ax.set_xticklabels(x) 
ax.set_xlim([0,100]) 

будет производить

enter image description here

Смежные вопросы