尽管R语言是进行生态环境数据探索的首选,但Excel无疑在我们搜集、整理以及初步数据探索中依旧有着十分重要的作用。绘制环境因子间的两两散点图是探索因子关系的常见步骤,当环境因子较多时scatterplotMatrix()显得力不从心,当因子间的关系不是简单的线性关系时,corrplot()也不能完全展示数据间的关系。这里我们用python的openpyxl包控制excel绘制11个变量间的两两散点图。

  效果如下:

主要步骤:

  1. python计算两两相关性P值
  2. python的openpyxl包控制excel绘制11个变量间的两两散点图,并将P值写入excel表格;
  3. VBA将P值添入散点图,并修改为默认格式;

步骤代码

  1. 步骤1的python代码
xie = pd.read_excel("./Desktop/xie.xlsx")
p = np.zeros(55)
l=0
for i in range(0,10):for j in range(i+1,11):x=np.array(xie[xie.columns[i]])y=np.array(xie[xie.columns[j]])fit = stats.linregress(x,y)p[l] = fit.pvalueprint([l,p[l]])l=l+1
  1. 步骤2的python代码:
from openpyxl import load_workbook
from openpyxl.chart import (ScatterChart,Reference,Series,legend,
)
from openpyxl.chart.text import (RichText,Text)
from openpyxl.drawing.text import (Paragraph, ParagraphProperties, CharacterProperties, Font,TextField
)
from openpyxl.styles import Border
from openpyxl.chart.trendline import (Trendline,TrendlineLabel)
from openpyxl.chart.title import title_makerwb = load_workbook('./Desktop/xie.xlsx')
ws = wb.active
k=0
for i in range(1,11):for j in range(i+1,12):       chart = ScatterChart()chart.height = 6.42chart.width = 9.57chart.legend = Nonexv = Reference(ws, min_col=i, min_row=2, max_row=80)#print(i)yv = Reference(ws, min_col=j, min_row=2, max_row=80)series = Series(values = yv,xvalues = xv,title_from_data=False)chart.series.append(series)chart.title = ws.cell(1,i).value+" vs "+ws.cell(1,j).valuetitle_font = Font(typeface='Calibri')cp = CharacterProperties(latin=title_font, sz=900)cp2 = CharacterProperties(latin=title_font, sz=1400,b=False)pp = ParagraphProperties(defRPr=cp)pp2 = ParagraphProperties(defRPr=cp2)rtp = RichText(p=[Paragraph(pPr=pp, endParaRPr=cp)])chart.x_axis.txPr = rtpchart.y_axis.txPr = rtpchart.title.text.rich.paragraphs[0].pPr = pp2s1 = chart.series[0]s1.marker.symbol = "circle"#s1.marker.graphicalProperties.solidFill = "FF0000" # Marker filling#s1.marker.graphicalProperties.line.solidFill = "FF0000" # Marker outlines1.graphicalProperties.line.noFill = True  # hide liness1.trendline=Trendline(trendlineType = 'linear',dispEq=True,dispRSqr=True)chartPosition = "N"+str(7*k+1)mycell = ws.cell(row=k+1, column=25)mycell.value = p[k]k=k+1ws.add_chart(chart, chartPosition)
wb.save("./Desktop/xie2.xlsx")
  1. 步骤3的VBA代码:
Sub addPvalue()For i = 1 To 55ActiveSheet.ChartObjects(Index:=i).Activatea = ActiveChart.FullSeriesCollection(1).Trendlines(1).DataLabel.TextActiveChart.FullSeriesCollection(1).Trendlines(1).DataLabel.Text = (a & ";" & Cells(i + 1, 22))ActiveChart.ChartStyle = 240Next i
End Sub

测试数据和可参考如下链接
python openpyxl + excel VBA批量绘制两两散点图

python openpyxl + VBA控制Excel批量绘制两两散点图相关推荐

  1. Python VS VBA 读取Excel中的文本框组件

    作者:小小明 Python读取Excel的文本框 基本需求 今天看到了一个很奇怪的问题,要读取Excel文件的文本框中的文本,例如这种: 本以为openxlpy可以读取,但查看openxlpy官方文档 ...

  2. python—openpyxl自动化操作Excel格式文件(6~10课)

    我有点懒直接截图的 仅个人笔记 复习需要 !!!!!! 文章目录 前言 一.安装库openpyxl 二.python打开及读取Excel表格内容 1.Excel表格基本术语 2.打开及读取表格数据 2 ...

  3. Python:openpyxl实现在excel绘制扇形图

    1.代码 import openpyxl from openpyxl.chart import PieChart, Referencedef excel_ReportAll(excel_path):# ...

  4. Python对比VBA实现excel表格合并与拆分

    1.Excel表格合并 我们在日常工作中经常会导出一些数据,但是这些数据较大可能是按照某个分类形成的单独表格,比如每一天的数据,每个品牌的数据等. 但是,我们在进行数据分析的时候可能往往需要对这些数据 ...

  5. Python 自动化办公:Excel 自动绘制图表

    今天的主题是 Excel,相信大家都比较熟悉吧.而且我相信,大家在日常使用 Excel 的时候,肯定会遇到很多重复繁琐的工作,因为我也同样遇到过.这个时候我通常都会思考下,有没有办法让繁琐的事情变得简 ...

  6. python openpyxl 自动设置excel列宽及行高,单元格对对齐方式

    import pandas as pd from openpyxl import load_workbook from openpyxl.utils import get_column_letter ...

  7. Python自动化办公之 Excel 自动绘制图表

    今天的主题是 Excel,相信大家都比较熟悉吧.而且我相信,大家在日常使用 Excel 的时候,肯定会遇到很多重复繁琐的工作,因为我也同样遇到过.这个时候我通常都会思考下,有没有办法让繁琐的事情变得简 ...

  8. 3 基于matplotlib的python数据可视化——导入Excel数据绘制组合图表

    目录 1.制作双折线图 2.组合图表制作 3.为组合图表添加并设置次坐标轴 销售业绩表1下载链接:https://download.csdn.net/download/weixin_44940488/ ...

  9. c调用python gensim包_Jupyter Notebooks嵌入Excel并使用Python替代VBA宏

    以前,Excel和Python Jupyter Notebook之间我们只能选择一个.但是现在随着PyXLL-Jupyter软件包的推出,可以将两者一起使用. 在本文中,我将向你展示如何设置在Exce ...

最新文章

  1. SQL 语句中 where 条件后 写上1=1 是什么意思
  2. idea设置开发方式
  3. android SharedPreferences实现用户的注册和保存账号密码
  4. 安卓imageView加载MYSQL图片_Android调用相机拍摄照片并显示到 ImageView控件中
  5. 【读书笔记】泛型接口 和 泛型方法
  6. MySQL主从同步校验与重新同步
  7. 建立http服务器,基于名称的虚拟主机
  8. linux中的ip地址、子网掩码、端口
  9. mysql 批量替换 所有表_[收藏]批量替换一个数据库中所有表中所有记录
  10. linux-目录结构
  11. NetBeans 时事通讯(刊号 # 74 - Sep 30, 2009)
  12. Moscow Pre-Finals Workshop 2020 - Legilimens+Coffee Chicken Contest (XX Open Cup, Grand Prix of Nanj
  13. python模糊匹配_python 字符串模糊匹配 Fuzzywuzzy
  14. 用计算机怎样弄出告白密码,数字表白密码 表白密码大全
  15. BLDC无刷直流电机
  16. HDMI接口之HPD(热拔插)
  17. 腾讯2021校园招聘技术类编程题汇总
  18. 快速计算delay函数中for循环延时程序占用的时间
  19. 福建师范大学网络教育学院 计算机应用基础 第三次作业,福建师范大学网络教育学院_《计算机应用基础》第三次作业...
  20. python 列表删除元素

热门文章

  1. 中科大少年班,官方公布48名新生名单,有人因偶像曹原,有人只是不想经历高三...
  2. 别再说自己不会JVM了,看完这篇能和面试官扯上半小时
  3. Android自定义view实现刮刮乐
  4. 通过锁装置实例了解SOLIDWORKS motion实体接触及马达的高级用法
  5. Android判断屏幕状态与屏幕解锁和锁定
  6. 【华为OD机试 】 免单统计(C++ Java JavaScript Python)
  7. 使用python控制仪器【控制苏州联讯源表SMU】
  8. 1.Ubuntu Linux 简介
  9. SpringCloud升级之路2020.0.x版-43.为何 SpringCloudGateway 中会有链路信息丢失
  10. ROS小乌龟turtlesim详解