【问题标题】:How to Make a graph with 2 data sets plotted?如何绘制包含 2 个数据集的图表?
【发布时间】:2018-05-31 19:09:22
【问题描述】:

截至目前,我正在尝试创建一个图表,这很好,直到我尝试在我的 .csv 文件中添加第三列数据。

所以基本上我是在做压力面积等温线,我的任务是制作压力面积图,我做到了(哇!)

import matplotlib.pyplot as plt
import numpy as np

 x, y = np.loadtxt("Example.csv", delimiter=',', unpack=True)
plt.plot(x,y)
plt.xlabel('Area-mm^2')
plt.ylabel('Pressure mN/m')

plt.title('Pressure-Area Isotherm\nKibron')
plt.legend()
plt.show()

这就是我得到的,我现在需要做的是将我拍摄的一些照片的平均像素值也放入图表中,这样我就可以将面积与压力/光强度之间的反比关系正相关。

My.csv(excel 文件)有三列,如果不可能同时做这两列,有人能告诉我一种只选择三列中的两列放在图表上的方法吗?即压力/面积、压力/像素值或面积/像素值。我认为这将涉及为每一列分配一个数字(n)并让 pyplot 图“n”与“n” 编辑:我还希望他们成为第二个比例,以便整个图表看起来不那么不稳定。再次感谢您的帮助!

|第一个是面积 |再压|和平均像素值|

【问题讨论】:

  • 要获取所有三列,只需使用 area, pressure, pixel = np.loadtxt("Example.csv", delimiter=",", unpack=True") 然后,您可以独立绘制它们:plt.plot(area, pressure) plt.plot(area, pixel) 要在两个单独的轴上绘制,请参见此示例:matplotlib.org/2.0.2/examples/api/two_scales.html
  • 你绝对是最棒的!我现在有一个漂亮的图表!非常感谢杰夫!!!

标签: python csv matplotlib


【解决方案1】:

您可以使用zip 并创建叠加图:

import csv
import matplotlib.pyplot as plt
with open('filename.csv') as f:
   headers = iter(['area', 'pressure', 'pixel'])
   data = {next(headers):list(map(float, b)) for _, *b in zip(*csv.reader(f))}

labels = ['pressure/area', 'pressure/pixel', 'area/pixel']
for i in labels:
  num, denom = i.split('/')
  plt.plot(data[num], data[denom], label = i)

plt.legend(loc='upper left')
plt.show()

【讨论】:

    猜你喜欢
    • 2013-12-31
    • 2015-04-07
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2019-12-21
    • 1970-01-01
    相关资源
    最近更新 更多