Как создать основные и малые сетки с различными Linestyles в Python
В настоящее время я использую matplotlib.pyplot
для создания графиков и хочу, чтобы основные сетки были сплошными и черными, а второстепенные - серыми или пунктирными. в сетке
which = both/major/mine, а затем цвет и linestyle определяются просто linestyle, есть ли способ указать только малый linestyle?
Соответствующий код я до сих пор
plt.plot(current, counts, 'rd', markersize=8)
plt.yscale('log')
plt.grid(b=True, which='both', color='0.65',linestyle='-')
Ответы
Ответ 1
Собственно, это так же просто, как установка major
и minor
отдельно:
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='--')
Получаемая информация с небольшими сетками заключается в том, что вы также должны включить незначительные отметки. В приведенном выше коде это делается с помощью yscale('log')
, но это также можно сделать с помощью plt.minorticks_on()
.
![enter image description here]()
Ответ 2
Простым способом DIY было бы сделать сетку самостоятельно:
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()