首先我们需要一组用于绘制散点图的数据,这里我们让claude帮我们虚构一组数据,为30个地级市的高程数据及高程标准差数据。前者反映地区的平均海拔,后者反映海拔的离散程度,结果如下:
利用claude编写散点图代码,如下:
在vscode中的运行代码,结果不能显示中文,如下:
由于matlab工具包不支持中文,需要引入字体,让claude修改代码,如下:
运行修改后的代码如下:
对比chatgpt,发现claude写代码更智能些,在显示中文这块,chatgpt多次都不能解决,claude一次就能完成。其实两者同源,claude是chatgpt副总裁带着一批人出来单干搞得,所以基本差不多,好在claude可以上传文档,对于输入的限制及使用次数也强于chatgpt。
完整代码如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = pd.DataFrame({'市名称': ['南京市', '无锡市', '徐州市', '常州市', '苏州市', '南通市', '连云港市', '淮安市', '盐城市', '扬州市', '镇江市', '泰州市','宿迁市', '济南市', '青岛市', '淄博市', '枣庄市', '东营市','烟台市', '潍坊市', '济宁市', '泰安市', '威海市', '日照市','临沂市', '德州市', '聊城市', '滨州市', '菏泽市', '郑州市'],'平均高程(米)': [20, 10, 60, 15, 12, 80, 55, 18, 35, 10, 40, 90, 100, 400, 50, 100, 150, 200, 80, 120, 140, 180, 60, 40, 130,90, 220, 160, 190, 110], '高程标准差(米)': [5, 3, 8, 4, 3, 10, 7, 5, 6, 2, 5, 12, 15, 20, 8, 10, 12,15, 8, 10, 12, 15, 6, 5, 10, 8, 18, 12, 15, 10]
})plt.scatter(data['平均高程(米)'], data['高程标准差(米)'], s=80, label='数据点') for i, txt in enumerate(data['市名称']):plt.annotate(txt, (data['平均高程(米)'][i], data['高程标准差(米)'][i]), fontsize=8)fit = np.polyfit(data['平均高程(米)'], data['高程标准差(米)'], 1)
fit_fn = np.poly1d(fit)
plt.plot(data['平均高程(米)'], fit_fn(data['平均高程(米)']), '--k', label='拟合线')plt.xlabel('平均高程(米)')
plt.ylabel('高程标准差(米)')
plt.title('地级市高程数据散点图')# 图例置于右下角
plt.legend(loc='lower right') # 拟合公式置于左上角
plt.text(20, 6, '拟合公式:\ny={:.2f}x+{:.2f}'.format(fit[0], fit[1]), fontsize=10)plt.show()