首先我们需要一组用于绘制散点图的数据,这里我们让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 plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data = 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()