I want to change the x-axis ticklabels to custom strings.
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import matplotlib.pyplot as plt
def pushButtonClicked(self):
code = self.lineEdit.text()
x=["one","two","three"]
l=[1,2,3]
y=[2,3,4]
ax = self.fig.add_subplot(111)
print(1)
ax.plot(l, y, label='DeadPopulation')
ax.xticks(l,x)
print(IntroUI.g_sortArrayDeadcnt)
ax.legend(loc='upper right')
ax.grid()
self.canvas.draw()
Despite searching many sites and finding many code examples, I couldn't solve this problem. What is the problem with my code?
I assume you just want to set the ticks to be equal to ['one', 'two', 'three']
?
To do this, you need to use set_xticks()
and set_xticklabels()
:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import matplotlib.pyplot as plt
def pushButtonClicked(self):
code = self.lineEdit.text()
x=["one","two","three"]
l=[1,2,3]
y=[2,3,4]
ax = self.fig.add_subplot(111)
print(1)
ax.plot(l, y, label='DeadPopulation')
# Set the tick positions
ax.set_xticks(l)
# Set the tick labels
ax.set_xticklabels(x)
print(IntroUI.g_sortArrayDeadcnt)
ax.legend(loc='upper right')
ax.grid()
self.canvas.draw()
Minimal example
import matplotlib.pyplot as plt
f, ax = plt.subplots()
x = ['one', 'two', 'three']
l = [1, 2, 3]
y = [2, 3, 4]
ax.plot(l,y)
ax.set_xticks(l)
ax.set_xticklabels(x)
plt.show()
Here is how it would look like: