Bir kod oluşturmak için matplotlib
ve numpy
kullanan bir kodum (kod izler) var. Şu an için gereksinimim var:Tamsayı kene etiketleri matplotlib, yok kökeni etiketleri yok
- Eksenlerin tamsayı kenarı olmasını istiyorum.
- Eksenler keneler, sıfırlar içermeyecek, örneğin
1.0
veya2.0
, ancak bunun yerine1
ve2
olmalıdır.x=0
vey=0
için keneler gizlenecektir (kaynak keneler).
Bu kod ile bunu başardık:
import numpy
import matplotlib.pyplot as plt
import matplotlib as mp
from matplotlib.ticker import FormatStrFormatter
# approximately a circle
x1 = [0.3, 1.0, 1.3, 1.3, 1.0, 0.3, -0.3, -1.0, -1.3, -1.3, -1.0, -0.3]
y1 = [1.7, 1.2, 0.6, -0.2, -1.2, -1.5, -1.5, -1.2, -0.2, 0.6, 1.2, 1.7]
number_of_values = 12
x2 = numpy.random.uniform(low=-1.0, high=1.0, size=number_of_values)
y2 = numpy.random.uniform(low=-1.0, high=1.0, size=number_of_values)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x1, y1, s=100, color='#FF0000', linewidth='1.5', marker='x', label='$y=1$')
ax.scatter(x2, y2, s=100, facecolors='none', edgecolors='#66AAAA', linewidth='1.5', marker='o', label='$y=0$')
ax.legend(loc='upper right')
ax.grid(True)
# LIMITS
x_lower_limit = min(x1) - 0.2 * max(x1)
x_upper_limit = 1.2 * max(x1)
ax.set_xlim(-2.0, 2.0)
y_lower_limit = min(y1) - 0.2 * max(y1)
y_upper_limit = 1.2 * max(y1)
ax.set_ylim(-2.0, 2.0)
# ORIGIN AXIS
ax.spines['left'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('center')
ax.spines['top'].set_color('none')
ax.spines['left'].set_smart_bounds(True)
ax.spines['bottom'].set_smart_bounds(True)
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set_xlabel('$x_1$', fontsize=14)#, x=0.9, y=1, labelpad=0.6)
ax.set_ylabel('$x_2$', fontsize=14, rotation=0)#, x=1, y=0.9, labelpad=0.6)
ax.xaxis.set_label_coords(1.04, 0.5)
ax.yaxis.set_label_coords(0.5, 1.02)
ax.set_xticks([-2.0, -1.0, 1.0, 2.0])
ax.set_yticks([-2.0, -1.0, 1.0, 2.0])
plt.title('Non-linear Decision Boundary', y=1.06)
plt.show()
Ancak, ben orada kene hardcoding ediyorum, gördüğünüz gibi - kötü uygulama. Bunu yapmanın bu yolunu geliştirmek istiyorum. Ben yani SO yayının çözümlerini aşağıdaki şimdiye kadar başka yöntemler denedim:
sorunu burada deyişle, aslında bile işe gelmez. Sabit kodlanmış ax.set_xticks([-2.0, -1.0, 1.0, 2.0])
ve ax.set_yticks([-2.0, -1.0, 1.0, 2.0])
'u kaldırdığımda, bu çizim çizgilerin 0.5
adımlarını kamalarda göstermesini ve sıfırlar olduğunu gösterir.
bu sorun ben ' '
gibi bir şeye kene etiketini değiştirmek, yine 0.0
olarak bu yorumlamak ve sondaki sıfırları ve non tam sayı değerlerini işlemek edeceğiz olmasıdır.
Kene etiketlerinin değerlerini kodlamayı nasıl engelleyebilirim? Bazı frekansları ayarlamak istiyorum: şunun gibi:
Bu, tüm onay etiketlerinin üzerinde yinelemekten kaçınacaktır. Gerekirse, kene etiketleri üzerinde yineleme gerekli bir kötülük olurdu, ama sanırım böyle bir yineleme olmadan bir yolu olmalı.
sabit kodlu kene yerini alabilir