Python'da farklı çizgi stilleri ile büyük ve küçük kılavuz çizgileri nasıl oluşturulur


122

Şu anda matplotlib.pyplotgrafikler oluşturmak için kullanıyorum ve ana kılavuz çizgilerinin düz ve siyah ve küçük olanların gri veya kesikli olmasını istiyorum.

Izgara özelliklerinde, which=both/major/mineardından renk ve çizgi stili basitçe çizgi stili ile tanımlanır. Yalnızca küçük çizgi stilini belirlemenin bir yolu var mı?

Şimdiye kadar sahip olduğum uygun kod

plt.plot(current, counts, 'rd', markersize=8)
plt.yscale('log')
plt.grid(b=True, which='both', color='0.65', linestyle='-')

Yanıtlar:


174

Aslında, ayarlamak kadar basit majorve minorayrı olarak:

In [9]: plot([23, 456, 676, 89, 906, 34, 2345])
Out[9]: [<matplotlib.lines.Line2D at 0x6112f90>]

In [10]: yscale('log')

In [11]: grid(b=True, which='major', color='b', linestyle='-')

In [12]: grid(b=True, which='minor', color='r', linestyle='--')

Küçük ızgaralarla ilgili sorun, küçük çentik işaretlerinin de açık olması gerektiğidir. Yukarıdaki kodda bu, tarafından yapılır yscale('log'), ancak ile de yapılabilir plt.minorticks_on().

görüntü açıklamasını buraya girin


33
Bazen plt.minorticks_on()küçük ızgaranın gerçekten görünmesi için de aramanız gerekir . Bkz stackoverflow.com/a/19940830/209246
eqzx

2
Gönderen docs : "kwargs sağlanır, size bir kılavuz istiyorum b dolayısıyla True olarak ayarlanmış olduğunu varsayılır." - böylece ihmal edebilirsiniz b=True.
miku

Aynı şeyi çift log arsa ile yapmayı denedim. Maalesef x ekseni yalnızca büyük kalınlıkları gösterir. Küçük kalınlıkları da açmak mümkün mü?
Alexander Cska

1
@Alexander işleve axis="both"parametre eklemeniz gerekir plt.grid().
Kanmani

Bunu varsayılan stil yapmak için bir rcParam özelliği var mı?
Kanmani

21

Basit bir DIY yolu, ızgarayı kendiniz yapmak olabilir:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot([1,2,3], [2,3,4], 'ro')

for xmaj in ax.xaxis.get_majorticklocs():
  ax.axvline(x=xmaj, ls='-')
for xmin in ax.xaxis.get_minorticklocs():
  ax.axvline(x=xmin, ls='--')

for ymaj in ax.yaxis.get_majorticklocs():
  ax.axhline(y=ymaj, ls='-')
for ymin in ax.yaxis.get_minorticklocs():
  ax.axhline(y=ymin, ls='--')
plt.show()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.