xticks и yticks не отображают несколько значений на диаграмме рассеяния с использованием matplotlib

Проблема: Невозможно определить, почему для xticks и yticks отсутствуют несколько значений из предоставленного списка. Мой код выглядит следующим образом:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(1000)
x=np.random.rand(10)
y=np.random.rand(10)
z=np.sqrt(x*2 + y*2)

fig=plt.figure(figsize=(8,6))

axes1=plt.subplot(221, title='Scatter plot with Upper Traingle Markers')
axes1.set_xticks([0.0, 0.4, 0.8, 1.2])
axes1.set_yticks([-0.2, 0.2, 0.6, 1.0])
axes1.scatter(x,y,marker='^',s=[80],c=z,edgecolor='black')

axes2=plt.subplot(222, title='Scatter plot with Plus Markers')
axes2.set_xticks([0.0, 0.4, 0.8, 1.2])
axes2.set_yticks([-0.2, 0.2, 0.6, 1.0])
axes2.scatter(x,y,marker='+',s=[80],c=z,edgecolor='black')

axes3=plt.subplot(223, title='Scatter plot with Circle Markers')
axes3.set_xticks([0.0, 0.4, 0.8, 1.2])
axes3.set_yticks([-0.2, 0.2, 0.6, 1.0])
axes3.scatter(x,y,marker='o',s=[80],c=z,edgecolor='black')    

axes4=plt.subplot(224, title='Scatter plot with Diamond Markers')
axes4.set_xticks([0.0, 0.4, 0.8, 1.2])
axes4.set_yticks([-0.2, 0.2, 0.6, 1.0])
axes4.scatter(x,y,marker='d',s=[80],c=z,edgecolor='black')

plt.tight_layout()
plt.show()

Мой вывод: htt ps:https://stackru.com/images/e5448d515f7736ddce2cb498db5aad5849092552.png

Мой желаемый результат: htt ps:https://stackru.com/images/5dabc5ed2c6b71de1211e537bb8a0c1a3956a1c4.png

4 ответа

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

axes4.set_xlim(0,1.2)

Вы можете вручную установить ось с помощью

axes1.axis([-0.1, 1.2, -0.2, 1.1])

и т.п.

      axes1.set_xlim(0, 1.2)
axes1.set_ylim(-0.2, 1.0)
axes2.set_xlim(0, 1.2)
axes2.set_ylim(-0.2, 1.0)
axes3.set_xlim(0, 1.2)
axes3.set_ylim(-0.2, 1.0)
axes4.set_xlim(0, 1.2)
axes4.set_ylim(-0.2, 1.0)

Этот код установит пределы и будет согласован с ожидаемыми значениями.

## Удалите xticks и используйте «xlim» и «ylim» в «plt.subplot ()».

          fig = plt.figure(figsize = (12,10))
    axes1 = plt.subplot(2,2,1,title = "Scatter plot with Upper Traingle 
    Markers",xlim= 0,1.2),ylim=(-0.2,1.0))
    #plt.xticks([0.0, 0.4, 0.8, 1.2])
    #plt.xticks(np.arange(-0.2, 1.2, step=0.4))
    #plt.yticks([-0.2, 0.2, 0.6, 1.0])
    axes2 = plt.subplot(2,2,2,title = "Scatter plot with Plus Markers",xlim= 
    (0,1.2),ylim=(-0.2,1.0))
   # plt.xticks([0.0, 0.4, 0.8, 1.2])
    # plt.yticks([-0.2, 0.2, 0.6, 1.0])
    axes3 = plt.subplot(2,2,3,title = "Scatter plot with Circle Markers",xlim= 
    (0,1.2),ylim=(-0.2,1.0))
    # plt.xticks([0.0, 0.4, 0.8, 1.2])
    # plt.yticks([-0.2, 0.2, 0.6, 1.0])
    axes4 = plt.subplot(2,2,4,title = "Scatter plot with Diamond Markers",xlim= 
    (0,1.2),ylim=(-0.2,1.0))
    # plt.xticks([0.0, 0.4, 0.8, 1.2])
    # plt.yticks([-0.2, 0.2, 0.6, 1.0])
    np.random.seed(1000)
    x = np.random.rand(10)
    y = np.random.rand(10)
    z = np.sqrt(x**2+y**2)
    axes1.scatter(x,y, s = 80,c =z,marker = "^")
    axes2.scatter(x,y, s = 80,c =z,marker = "+")
    axes3.scatter(x,y, s = 80,c =z,marker = "o")
    axes4.scatter(x,y, s = 80,c =z,marker = "d")
    plt.tight_layout()
    plt.show()
Другие вопросы по тегам