- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我目前在 Excel 电子表格中有很多数据。我需要通过 python 绘制它。我知道如何使用 xlrd 从 excel 文件中读取数据,我知道如何使用 matplotlib 在 python 中绘图。基本上,我的数据看起来包含 x 坐标、y 坐标以及正负 y 误差列。我需要一种方法来将数据从电子表格导入并成为图表上的点和误差线。老实说,我是 python 的新手,不知道为什么我的代码不起作用。
import xlrd
import numpy as np
import matplotlib.pyplot as plt
file_location = "C:/Users/Rima/Desktop/apjl731data.xlsx"
workbook = xlrd.open_workbook(file_location)
first_sheet = workbook.sheet_by_index(0)
for col in range(first_sheet.ncols):
x = first_sheet.cell_value(0,col)
y = first_sheet.cell_value(1,col)
yerr = first_sheet.cell_value(2,col)
plt.errorbar(x,y,yerr,fmt='r^')
plt.show()
我还没有找到如何在线执行此操作,只有如何使用 python 在 excel 中制作图表。我确定我的代码可能缺少很多功能,但我不确定是什么。同样对于 yerr,为了在数据点的顶部和底部获得不同的错误值,我一直将其作为数组传递 yerr = np.array([])每个点的误差值不同。我不知道如何导入数据,因为我的正错误和负错误位于电子表格的不同列中。如果有人知道如何导入数据,请帮忙,因为这会让我的生活更轻松,因为我不必手动输入 50 个数据点。谢谢!
编辑:我的数据的一个例子是
log(O/H)+12 positive error negative error virgo infall 距离
8.56 0.05 0.05 4.61
8.59 0.03 0.03 -
8.54 0.04 0.06 2.97297
8.94 0.13 0.12 8.24493
我的数据中确实有间隙,用 - 标记,我不知道在尝试绘制时这是否会导致错误。所以我可能需要一种方法来跳过这些行。再次感谢。
编辑 2:我仍然有错误,所以这里是回溯。
谢谢!
最佳答案
我做了一些假设。假设你的数据是这样的:
x y yerr_positive yerr_negative
1 1 0.1 0.2
2 2 0.1 0.2
3 3 0.1 0.2
4 4 0.1 0.2
我还稍微修改了加载数据的方式,以便将每一列加载到它自己的数组中,例如:
x = [first_sheet.cell_value(i, 0) for i in range(first_sheet.ncols)]
您可以使用 errorbar 通过传递以下形式的数组来获得一个值的正+负错误:
yerr = [y_error_negative, y_error_positive]
其中 y_error_negative
和 y_error_positive
是长度与 y
相同的数组。
然后您应该具有以下内容:
import xlrd
import numpy as np
import matplotlib.pyplot as plt
file_location = "C:/Users/Rima/Desktop/apjl731data.xlsx"
workbook = xlrd.open_workbook(file_location)
first_sheet = workbook.sheet_by_index(0)
x = [first_sheet.cell_value(i, 0) for i in range(first_sheet.ncols)]
y = [first_sheet.cell_value(i, 1) for i in range(first_sheet.ncols)]
yerr_pos = [first_sheet.cell_value(i, 2) for i in range(first_sheet.ncols)]
yerr_neg = [first_sheet.cell_value(i, 3) for i in range(first_sheet.ncols)]
yerr = [yerr_neg, yerr_pos]
plt.errorbar(x,y,yerr,fmt='r^')
plt.axis([0,5,0,5])
plt.show()
这给出了这个:
如果没有更多细节,回答起来有点困难。
编辑:
如果数据中有“-”,有很多方法可以忽略它。因此,按照我上面概述的方式快速破解,您可以重新检查 x 值:
x y yerr_positive yerr_negative
1 1 0.1 0.2
- 2 0.1 0.2
3 3 0.1 0.2
4 4 0.1 0.2
然后您将删除“-”并替换为 0,例如,
x = [float(i) if i != '-' else 0 for i in x]
另一种方法是在加载值时循环遍历它们,并执行 value if value.isdigit() else 0
,而无需两个列表理解。
或者,你可以像你说的那样完全忽略它:
x = [float(i) for i in x if i!= '-']
如果您可以对 virgo 落入距离设置一些通用上限,那么最好不要浪费您的金属丰度数据。如果您不断收到类型错误,请提供更多信息。
关于python - 使用 Excel 工作表中的数据在 Python 中绘制图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31305809/
我最近一直在学习 Clojure。 Clojure 世界中是否有类似 Scala 的工作表这样的东西,我可以在其中放入任何代码并在保存后立即对其进行评估?或者也许 Clojure 有类似的解决方案?
有人可以帮我吗?我想知道如何过滤工作表中的多个选项卡(C1-C19)。这是我所做的: 我创建了一张表格,将所有回复存储在我的谷歌表单(事件注册表单)中。每个参与者将收到一个坦克编号,每个坦克编号根据其
这就是我将打开的面板显示为 float 窗口的方式。 有人可以帮我将面板作为工作表运行吗?窗口对象是mWindow。我使用的许多标准代码都已被折旧。 NSOpenPanel *openPanel =
当您仅键入 worksheets() 时,默认范围 ActiveWorkbook 或 ThisWorkbook 是什么?对于那些不了解这些区别的人来说,它们非常重要,尤其是在 Excel 2013 中
我有一个带有一些图表的 HTML 页面。我想要做的是编写一个加载 javascript 函数,它将从 excel 表中读取值,将它们存储在变量中并在 html 页面上使用它们。我的问题是是否有任何 j
我需要将参数 callFrom 传递给 SwiftUI 中的工作表。 奇怪的是,该参数在第一次调用时没有使用,但对以下调用有效。 import SwiftUI struct ContentView:
我试着 var tempSheet = wrksheets[sheetName] as Worksheet; 在哪里 wrksheets是类型表 sheetName 是“带空格的工作表名称” 如果
该函数用作“ Assets 类别分配”引擎(在参数范围内具有约束)并在数组的每一行上模拟投资组合模型。我尝试使用四种方法将数组发布到工作表上,但每种方法都失败了。 对于 Assets A、B、C、D
目前,我的 excel 文件有两张表,一张名为“English”,一张名为“French”。 我以编程方式打开我的工作簿并编辑我的英文表,没有任何问题。当我打开第二张工作表时,出现以下错误: The
我添加了一个 VBA 表单 userform和一个模块 Module1在 Excel 中打开 Microsoft VBA 编辑器 (Alt+F11)。 现在,每当我打开任何其他 Excel 时,按 A
在单个 Excel 工作簿中,我想选择各种工作表来运行 VBA 子例程。我找到了显示如何遍历选定工作表的代码,它使用“MsgBox sh.Name”;但是,当我将代码放入其中时,它只会影响选择的最后一
我想知道是否有一个函数可以在 Excel 中加载特定于 Python 的工作表,例如,如果我有 34 张工作表只加载前 25 张工作表。通过以下行,我加载了所有工作表。 xlsx=pd.ExcelFi
我有一个名为“A”、“B”、“C”等的工作表的 xlsx。我需要形成一个名称为“A”、“B”、“C”的表作为第一列,以及来自的一些数据每个工作表中与第二列相同的单元格。例如,这可能看起来像: S
我有一张用密码保护的工作表。当我使用 VBA 更改该表上的任何内容时,我会像这样取消保护: Private Sub Worksheet_Change(ByVal target As Range)
我想将 Excel 文档插入 Excel 工作表。我可以通过以下步骤手动执行此操作; 插入/文本/对象/从文件创建(勾选显示为图标)/浏览。 然后我选择文件并插入文档。 我想通过宏来做到这一点。 (录
是否可以创建 批处理文件那将执行以下操作? 重命名 Excel 文件中的单个工作表(不是 Excel 工作簿/文件本身) 将简单格式应用于 Excel 文件 - 例如,将字体和字体大小应用于整个工作簿
Private Sub CommandButton1_Click() Dim ws As Worksheet With Application.FileDialog(msoFileDialog
我想知道是否可以在不复制该工作表的情况下引用另一本工作簿中的 Excel 工作表? 情况:我有一些非常大的工作表,其中充满了各种数据,但我不想在我的工作簿中保留它们的副本,因为虽然每个工作簿都使用相同
我有这个 Python 字典,我想将这个数据写入 Excel 文件。 注意:有很多类别,每个类别有很多汽车(为简单起见,我使用了 2 个类别) data = {"Category": {"Diesel
我有一个 excel 工作簿,在工作簿中我有 2 张名为 Front Page 和 Drafting 的工作表。起草工作表引用了首页工作表中的一些值。这只是一个基本的引用 我有像这样的公式:='Fro
我是一名优秀的程序员,十分优秀!