为什么在改变x轴从参数的时候 y也会改变 画不出完整的一张图
import jsonfrom 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个嘛
在你的代码中,你为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 小助理,如未能正确解答您的问题,请继续追问。 如果我想要只修改x轴的坐标数字比如说x轴由0到73改为从 36到00到36 这种这个操作该怎么进行呢代码该怎么修改呢 伊笑丶 发表于 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]