排列matplotlib数据,使其中一个轴上的字符串不是整数(不是标签)

2024-06-16 11:35:02 发布

您现在位置:Python中文网/ 问答频道 /正文

场景:我在每台机器上检索数据;想象一下照相机,然后我做一些测试,比如拍照、拍摄突发事件等等,保存这些值。你知道吗

我想使用matplotlib来绘制数据,但是我找不到方法来获取其中一个轴上的数据,因此我可以将相机的名称与各种参数关联起来。你知道吗

到目前为止,我可以正确地绘制数据;因此,如果我有3个参数(拍照时间、闪光灯充电时间和最大连拍次数),我可以这样绘制它们:

camera1 = (0.4, 0.74, 8)
camera2 = (0.32, 0.2, 10)
camera3 = (0.45, 1.2, 7)
camera4 = (0.6, 0.93, 5)

# programmatically create the datasets
takeshot = (0.4,0.32,0.45,0.6)
chargeflash = (0.74, 0.2, 1.2, 0.93)
burstmax = (8,10,7,5)

plt.plot(takeshot, label="Take Shot")
plt.plot(chargeflash, label="Charge Flash")
plt.plot(burstmax, label="Burst Max")

plt.legend()
plt.show()

不过,我得到的是一个轴上的值,这很好;另一个轴上的值的数量(从0到4)。 我想得到这个轴,摄像机的名称,所以当我看数据时,我可以看到摄像机2是最快的拍摄,与其他摄像机相比,等等。你知道吗

我找不到告诉matplotlib这样做的方法;摄影机名称是一个字符串,如果我使用字符串列表作为轴,就会得到一个异常。你知道吗

编辑:不是重复的;我没有要放在X轴上的公共值,从Y轴开始;我的都是唯一的值,范围不同,即使最终目的(放在X轴上的文本)是相同的


Tags: 数据方法字符串名称参数plotmatplotlib时间
1条回答
网友
1楼 · 发布于 2024-06-16 11:35:02

你为什么不想要标签?这就是你想要的结果吗? enter image description here 对于标签,在x轴上似乎有字符串。你知道吗

我还缩放了所有的相对值(并隐藏了y标签),以提高可见性。为此,我被迫绘制数组而不是列表。你知道吗

from matplotlib import pyplot as plt
import numpy as np

camera1 = (0.4, 0.74, 8)
camera2 = (0.32, 0.2, 10)
camera3 = (0.45, 1.2, 7)
camera4 = (0.6, 0.93, 5)

# programmatically create the datasets
takeshot = np.array([0.4,0.32,0.45,0.6])
chargeflash = np.array([0.74, 0.2, 1.2, 0.93])
burstmax = np.array([8, 10, 7, 5])

x = [1, 2, 3, 4]
labels = ['CAM1', 'CAM2', 'CAM3', 'CAM4']

fig, ax = plt.subplots()
plt.xticks(x, labels, rotation='horizontal')
ax.get_yaxis().set_visible(False)

plt.plot(x, takeshot*2, label="Take Shot")
plt.plot(x, chargeflash, label="Charge Flash")
plt.plot(x, burstmax/3, label="Burst Max")

plt.legend()
plt.show()

相关问题 更多 >