как печатать большие значения по оси y

#python #matplotlib

Вопрос:

Привет, я строю линейный график, и мой код таков, но я не уверен, как строится ось y, так как у меня очень большое значение 18965544, 45668787, но как ось y строит значения в виде значений, таких как 1 2 3

 import matplotlib.pyplot as plt
    import pandas as pd
    plt.rcParams.update({'font.size': 16})
L=[A,B,C,D,E,F,G,H]
New=[18965544, 45668787, 46768733, 865533, 32586879, 996665544, 53544222,97775644]  
Old= [23455, 0,0,0,0, 996665544, 65645, 654535]
plt.plot(FLMAUB) 
plt.plot(RandomFL)
plt.legend(['new', 'old'], loc='upper right')
plt.xticks(x1, L, rotation=30, horizontalalignment='right')
plt.plot(New, Old)
plt.title('New Vs Old')
plt.xlabel('Names')
plt.ylabel('Cost')
plt.show()
 

Комментарии:

1. Может быть, вам стоит попробовать формат научных обозначений: plt.ticklabel_format(ось=»y», стиль=»sci», scilimits=(0,0))

2. но если 49000000 является наивысшим значением, то нехорошо использовать это значение в scilimits=(0,49000000), что было бы лучшим вариантом

3. (0,0) если я уверен, что включает все числа, вам не нужно вводить ничего лишнего, он будет адаптироваться к вашим числам

Ответ №1:

Я подумал о некоторых возможностях, вы могли бы попробовать это:

  • Использование линейного пространства с numpy.linspace
 # With this method you can create an evenly spaced range of values
# given a start, the end and how many numbers you want in this interval

from numpy import linspace
from matplotlib import pyplot as plt

# You could use 'min()' and 'max()' for the range of your data array
plt.yticks(linspace('min_value', 'max_value', 'how_many_samples'))

# Something like
plt.linspace(18965544, 45668787, 12)
 
 # You can unpack the subplots tuple as conventioned
fig, ax = plt.subplots()
ax.set_yscale('log')  # For an example, you can use Logarithmic scale
 

Ответ №2:

 plt.plot(New,Old)
plt.ticklabel_format(axis="both", style="scientific", scilimits=(0,0)) 
 

Это даст вам этот образ. У вас есть оси y и x от 0-1,0, но они умножены на $1×10^9$.
введите описание изображения здесь