0

入力 *.txt ファイルを使用して非常に単純な棒グラフ (Python、Matplotlib) をプロットする方法で提供されている例に基づいて、縦棒グラフを作成しようとしていますか? およびpylab_examples のサンプル コード: barchart_demo.py

# a bar chart
import numpy as np
import matplotlib.pyplot as plt

data = """100 0.0
      5 500.25
      2 10.0
      4 5.55
      3 950.0
      3 300.25"""

counts = []
values = []

for line in data.split("\n"):
    x, y = line.split()
    values = x
    counts = y

plt.bar(counts, values)

plt.show()

現在、次のエラーが表示されます: AssertionError: incompatible sizes: argument 'height' must be length 15 or scalarplt.bar()関数が正しく定義されているかどうかはわかりません。前述の 2 つの例を再現しようとしたときに見落とした問題が他にもある可能性があります。

4

2 に答える 2

2

x, y = line.split() は文字列のタプルを返します。それらをintとfloatに変換する必要があると思います。また、values.append(x) と values.append(y) も必要です。

import numpy as np
import matplotlib.pyplot as plt

data = """100 0.0
      5 500.25
      2 10.0
      4 5.55
      3 950.0
      3 300.25"""

counts = []
values = []

for line in data.split("\n"):
    x, y = line.split()
    values.append(int(x))
    counts.append(float(y))

plt.bar(counts, values)

plt.show()

最初の行に 100 の値があると (残りは <= 5 と比較して)、かなり醜い棒グラフになります。

于 2013-09-24T18:49:59.267 に答える
1

たぶん、あなたは次のようなことをしたいでしょう

for line in data.split("\n"):
    x, y = line.split()
    values.append(int(x))
    counts.append(float(y))
于 2013-09-24T18:41:40.070 に答える