Matplotlib increase spacing between points on x-axis
Firstly, it's hard to know exactly what's happening, without your data, so I had to create dummy data and adjust for your variables, 'self.identifier', and 'xticks' given that we don;t know what those are.
That being said, the function you're looking for is
plt.tick_params(axis='x', which='major', labelsize=__)
as seen in the code below:
import numpy as np
import matplotlib.pyplot as plt
#make dummy data
x=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]
y=np.random.rand(len(x))
plt.figure()
plt.plot(x, y)
plt.bar(x, y, alpha=0.2)
plt.title(f"średnia cena produktu, według kontrahentów")
plt.xlabel("kontrahent")
plt.ylabel("cena")
plt.xticks(x, [str(i) for i in y], rotation=90)
#set parameters for tick labels
plt.tick_params(axis='x', which='major', labelsize=3)
plt.tight_layout()
This solution from pythonpedia.com solved the issue for me. Reproducing here for longevity, all credit to ImportanceOfBeingEarnest and the page https://pythonpedia.com/en/knowledge-base/44863375/how-to-change-spacing-between-ticks-in-matplotlib- .
Answer from ImportanceOFBeingEarnest:
The spacing between ticklabels is exclusively determined by the space between ticks on the axes. Therefore the only way to obtain more space between given ticklabels is to make the axes larger.
In order to determine the space needed for the labels not to overlap, one may find out the largest label and multiply its length by the number of ticklabels. One may then adapt the margin around the axes and set the calculated size as a new figure size.
import numpy as np
import matplotlib.pyplot as plt
N = 150
data = np.linspace(0, N, N)
plt.plot(data)
plt.xticks(range(N)) # add loads of ticks
plt.grid()
plt.gca().margins(x=0)
plt.gcf().canvas.draw()
tl = plt.gca().get_xticklabels()
maxsize = max([t.get_window_extent().width for t in tl])
m = 0.2 # inch margin
s = maxsize/plt.gcf().dpi*N+2*m
margin = m/plt.gcf().get_size_inches()[0]
plt.gcf().subplots_adjust(left=margin, right=1.-margin)
plt.gcf().set_size_inches(s, plt.gcf().get_size_inches()[1])
plt.savefig(__file__+".png")
plt.show()
Note that if the figure shown in the plotting window is larger than the screen, it will be shrunk again, so the resized figure is only shown in its new size when saved. Or, one may choose to incorporate it in some window with scrollbars.