#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)
- Используя другую шкалу из
matplotlib.axes.Axes.set_yscale
# You can unpack the subplots tuple as conventioned
fig, ax = plt.subplots()
ax.set_yscale('log') # For an example, you can use Logarithmic scale