저는 Python 및 Matplot을 사용하여 데이터 시각화를 시도해 왔습니다. 이 경우 열당 누락 된 데이터의 양을 시각화하려고합니다. 짧은 스크립트를 실행하여 열당 모든 누락 된 값과 missing_count 배열의 결과를 찾습니다. 이제 Matplot을 사용하여 막대 차트에 표시하고 싶지만이 문제가 발생했습니다.
import matplotlib.pyplot as plt
import numpy as np
missing_count = np.array([33597, 0, 0, 0, 0, 0, 0, 12349, 0, 0, 12349, 0, 0, 0, 115946, 47696, 44069, 81604, 5416, 5416, 5416, 5416, 0, 73641, 74331, 187204, 128829, 184118, 116441, 183093, 153048, 187349, 89918, 89918, 89918, 89918, 89918, 89918, 51096, 51096, 51096, 51096, 51096, 51096, 51096, 51096, 51096, 51096])
n = len(missing_count)
index = np.arange(n)
fig, ax = plt.subplots()
r1 = ax.bar(index, n, 0.15, missing_count, color='r')
ax.set_ylabel('NULL values')
ax.set_title('Amount of NULL values per colum')
ax.set_xticks(index + width / 2)
ax.set_xticklabels(list(originalData.columns.values))
plt.show()
이 오류의 결과 :
ValueError Traceback (most recent call last)
<ipython-input-34-285ca1e9de68> in <module>()
10 fig, ax = plt.subplots()
11
---> 12 r1 = ax.bar(index, n, 0.15, missing_count, color='r')
13
14 ax.set_ylabel('NULL values')
C:\Users\Martien\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, *args, **kwargs)
1895 warnings.warn(msg % (label_namer, func.__name__),
1896 RuntimeWarning, stacklevel=2)
-> 1897 return func(ax, *args, **kwargs)
1898 pre_doc = inner.__doc__
1899 if pre_doc is None:
C:\Users\Martien\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in bar(self, left, height, width, bottom, **kwargs)
2077 if len(height) != nbars:
2078 raise ValueError("incompatible sizes: argument 'height' "
-> 2079 "must be length %d or scalar" % nbars)
2080 if len(width) != nbars:
2081 raise ValueError("incompatible sizes: argument 'width' "
ValueError: incompatible sizes: argument 'height' must be length 48 or scalar
높이가 스칼라 여야한다고 알려주는 Matplot 문서를 살펴 보았지만이 스칼라가 무엇인지 참조하거나 설명하지 않습니다. 실행하면 작동하는 이 예제 도 있습니다.
이 오류가 발생하는 이유에 대한 아이디어가 부족합니다. 모든 도움을 주시면 감사하겠습니다.
편집 : originalData는 내가 읽은 원본 CSV 파일입니다. 여기에서는 막대 이름을 지정할 때만 사용합니다.
따라서 https://matplotlib.org/devdocs/api/_as_gen/matplotlib.pyplot.bar.html 에 따르면
두 번째 인수는 높이 여야합니다.
n
단일 숫자 인 두 번째 인수로 입력 하고 있습니다.
시험
r1 = ax.bar(index, missing_count, 0.15, color='r')
대신 작업을 완료해야합니다.
더 좋은 점은 인수 이름을 명시하는 것입니다 (지루하고 깔끔하게 유지하기가 더 어렵지만 인수가 많을 때는 좋은 아이디어).
r1 = ax.bar(x=index, height = missing_count, width = 0.15, color='r')
두 번째 인수는 높이 여야합니다. 높이는 특정 상자의 개수에 해당합니다. 0과 1의 배열이 있다고 가정 해 보겠습니다.
A = [0,0,0,0,1,1,1]
그 결과 두 개의 막대가있는 막대 그래프가 생성됩니다. 하나는 높이가 4 단위 (0이 4 개이므로)이고 다른 하나는 높이가 3 단위입니다.
명령
r1 = ax.bar([0,1], [4,3], 0.15, color='r')
막대가 0이고 막대가 1 인 플롯을 만듭니다. 첫 번째 막대는 4 단위 높이이고 두 번째 막대는 3 단위 높이입니다.
코드에 번역, missing_count
하지의 배열의 COUNT에 해당하는 A
대신[Counter([0,0,0,0,1,1,1])[x] for x in Counter([0,0,0,0,1,1,1])]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다