【问题标题】:How to make sure matplotlib line graph is correct?如何确保 matplotlib 折线图正确?
【发布时间】:2018-12-23 03:34:33
【问题描述】:

我需要通过 matplotlib 绘制一个准确的折线图,但我只得到一个 y=x 图。并且 y 轴刻度值是混乱的。

import numpy as np
import matplotlib.pyplot as plt

title = "Number of Flats Constructed"
data = np.genfromtxt('C:\data/flats-constructed-by-housing-and-development-board-annual.csv', 
                        skip_header=1, 
                        dtype=[('year','i8'),('flats_constructed','U50')], delimiter=",",
                        missing_values=['na','-'],filling_values=[0])

x = data['year']
y = data['flats_constructed']

plt.title('No. of Flats Constructed over the Years')
#plt.plot(data['year'], data['flats_constructed'])
plt.plot(x, y)
plt.show()

我收到的是 y=x 图表,而不是反映这些值的锯齿状图表。

实际输出

预期输出示例

【问题讨论】:

  • 请从您的变量数据中添加示例记录
  • 感谢 cmets!进行了编辑!感谢您的善意建议
  • 打印xy时,数据是否正确?

标签: python numpy matplotlib graph line


【解决方案1】:

你的错误是('flats_constructed','U50')

将其作为('flats_constructed','i8') 本身。当你给 U50 时,你把它读成字符串。

from io import StringIO
import numpy as np

s = StringIO(u"1977,30498\n1978,264946\n1979,54666\n1980,54666")
data = np.genfromtxt(s, dtype=[('myint','i8'),('myfloat','i8')], delimiter=",",skip_header=0)
data

plt.plot(data['myint'],data['myfloat'])
plt.show()

【讨论】:

  • 我从另一个样本中复制粘贴,没有人教我 i8 和 u50 是什么意思。谢谢指正!
  • 使用 Pandas 函数 - pd.read_csv(),对用户更友好
  • 作业仅限于numpy和matplotlib,只是为了测试我们对它们的熟悉程度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
相关资源
最近更新 更多