Python에서 다른 선 스타일로 주 및 부 격자 선을 만드는 방법


122

저는 현재 matplotlib.pyplot그래프를 만드는 데 사용 하고 있으며 주요 격자 선은 단색과 검정색이고 작은 격자 선은 회색 또는 점선으로 표시하고 싶습니다.

그리드 속성에서 which=both/major/mine, 색상 및 선 스타일은 단순히 선 스타일로 정의됩니다. 부선 스타일 만 지정하는 방법이 있습니까?

지금까지 내가 가지고있는 적절한 코드는

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

답변:


174

실제로 설정하는 것만 큼 간단 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().

여기에 이미지 설명 입력


31
때로는 plt.minorticks_on()실제로 나타나는 보조 그리드를 호출해야합니다 . stackoverflow.com/a/19940830/209246
eqzx

2
로부터 문서 : "kwargs로 공급하는 경우, 당신이 그리드를 원하고 B는 따라서 True로 설정되어 있다고 가정한다." -그래서 생략 할 수 있습니다 b=True.
miku

이중 로그 플롯으로 동일한 작업을 시도했습니다. 불행히도 x 축은 주요 두께 만 보여줍니다. 작은 두께도 켤 수 있습니까?
Alexander Cska

1
@Alexander axis="both"plt.grid()함수 에 매개 변수 를 추가해야 합니다.
Kanmani

이것을 기본 스타일로 만드는 rcParam 속성이 있습니까?
Kanmani

21

간단한 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()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.