鱼C论坛

 找回密码
 立即注册
查看: 510|回复: 3

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

[复制链接]
发表于 2024-4-6 14:23:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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[i]["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个嘛




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[i])

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-6 15:01:25 | 显示全部楼层
如果我想要只修改x轴的坐标数字  比如说x轴由0到73  改为从 36到0  0到36 这种  这个操作该怎么进行呢  代码该怎么修改呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[i])  # 根据索引取出对应的硬度值

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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 14:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表