伊笑丶 发表于 2024-4-6 14:23:09

为什么在改变x轴从参数的时候 y也会改变 画不出完整的一张图

import json
from pyecharts.charts import Line
from pyecharts.options import LabelOpts, TitleOpts, AxisOpts
f_yd = open("E:/dev/硬度.txt", "r", encoding="UTF-8")
f_yd_d = f_yd.read()
f_yd_d = json.loads(f_yd_d)
num = len(f_yd_d)
x_data = []
y_data = []
for i in range(0, num):
    y_data.append(f_yd_d["HV"])

# for i in range((-int(num/2)), (int(num/2))):
for z in range(-36, 35):   #只将这里的的range改为(0,73)
    x_data.append(z)
print(y_data)
a = len(x_data)
b = len(y_data)
print(a,b)

line = Line()
line.add_xaxis(x_data)
line.add_yaxis("3mm硬度", y_data,label_opts=LabelOpts(is_show=False), is_connect_nones=False)
line.set_global_opts(
    title_opts=TitleOpts(is_show=True),
    xaxis_opts=AxisOpts(name="距离焊缝中心距离", name_location="center", name_gap=30),
    yaxis_opts=AxisOpts(name="硬度/HV", name_location="center",name_gap=30)
)
line.render()
f_yd.close()
为什么 这一点点小改动输出出来的图片结果能差别这么大对应的x轴的点数不一样都是73个嘛




FishC 发表于 2024-4-6 14:23:24

在你的代码中,你为x轴定义了一个范围从-36到35的数列,将该数列作为x_data。然后你将y_data设置为一个包含了所有硬度值的列表。但是在往pyecharts的Line图表中添加数据点时,x_data和y_data的长度必须一致,否则会导致图表无法绘制。

在第一个循环中,你使用了range(0, num)遍历了所有的硬度值,将每个硬度值添加到了y_data列表中。问题在于,你并没有为每个硬度值指定一个对应的x轴数值。因此,当你在循环结束之后,x_data只包含了-36到35的数列,而y_data则包含了num个硬度值。

如果你想要绘制完整的图表,需要保证x_data和y_data的长度一致,并且每个硬度值都有对应的x轴数值。例如,你可以修改代码如下:

for i in range(num):
    x_data.append(i - num/2)
    y_data.append(f_yd_d)

这样,x_data将会包含从-36到35的数列,而y_data将会包含对应的硬度值。

另外,在注释中你提到将range(-36, 35)改为range(0, 73),这实际上也是一个可行的解决方案。但是要注意,你需要确保f_yd_d中存储的硬度值数量与73相符。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

伊笑丶 发表于 2024-4-6 15:01:25

如果我想要只修改x轴的坐标数字比如说x轴由0到73改为从 36到00到36 这种这个操作该怎么进行呢代码该怎么修改呢

FishC 发表于 2024-4-6 15:01:44

伊笑丶 发表于 2024-04-06 15:01
如果我想要只修改x轴的坐标数字比如说x轴由0到73   ...

如果你想将x轴的坐标数字从0到73改为36到0再到0到36的形式,可以使用以下代码进行修改:

import json
from pyecharts.charts import Line
from pyecharts.options import LabelOpts, TitleOpts, AxisOpts

f_yd = open("E:/dev/硬度.txt", "r", encoding="UTF-8")
f_yd_d = f_yd.read()
f_yd_d = json.loads(f_yd_d)
num = len(f_yd_d)

x_data = []
y_data = []
for i in range(0, num):
    x_data.append(i)# 将x轴坐标数字设置为从0到num-1的数列
    y_data.append(f_yd_d)# 根据索引取出对应的硬度值

line = Line()
line.add_xaxis(x_data)
line.add_yaxis("3mm硬度", y_data, label_opts=LabelOpts(is_show=False), is_connect_nones=False)
line.set_global_opts(
    title_opts=TitleOpts(is_show=True),
    xaxis_opts=AxisOpts(name="距离焊缝中心距离", name_location="center", name_gap=30),
    yaxis_opts=AxisOpts(name="硬度/HV", name_location="center", name_gap=30)
)
line.render()

f_yd.close()

通过这段代码,x_data将会包含从0到num-1的数列,而y_data则包含对应的硬度值。这样就生成了符合你要求的x轴坐标数字范围。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 为什么在改变x轴从参数的时候 y也会改变 画不出完整的一张图