用R或Python表示优势比和p值的好方法
假设我有n个二进制变量,我想将它们与n^2/2-n卡方检验进行比较。因此,我可以得到每个交互作用的优势比(OR)和p值。这些可以显示为两个单独的nxn矩阵(一个用于OR,一个用于p值),但我想在一个信息图上显示它们 类似的想法是R中的A,但大小与OR相当,p值与颜色相当 在R或Python中是否有任何已知的包可以绘制类似的内容? 我尝试了python中的seaborn:用R或Python表示优势比和p值的好方法,python,r,seaborn,Python,R,Seaborn,假设我有n个二进制变量,我想将它们与n^2/2-n卡方检验进行比较。因此,我可以得到每个交互作用的优势比(OR)和p值。这些可以显示为两个单独的nxn矩阵(一个用于OR,一个用于p值),但我想在一个信息图上显示它们 类似的想法是R中的A,但大小与OR相当,p值与颜色相当 在R或Python中是否有任何已知的包可以绘制类似的内容? 我尝试了python中的seaborn: import seaborn as sns import numpy as np import pandas as pd im
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
p = -np.log10(np.random.random((3,5)))
odds = (2*np.random.random((3,5))-1)
future_df = []
for i in range(p.shape[0]):
for j in range(p.shape[1]):
future_df.append([j+0.5,i+0.5,p[i,j],odds[i,j]])
df = pd.DataFrame(future_df, columns=["x","y","-log10(p)","OR"])
# Plotting
sns.set_style("whitegrid")
ax = sns.relplot(x="x", y="y", hue="-log10(p)", size="OR", data=df,
palette="Reds", sizes=(0,10000), height=10, aspect=(odds.shape[1]/odds.shape[0])*1.5)
ax.ax.set(xlim=(0,odds.shape[1]))
ax.ax.set(ylim=(0,odds.shape[0]))
ax.ax.set(yticks=range(0,odds.shape[0]))
norm = plt.Normalize(0, 3)
sm = plt.cm.ScalarMappable(cmap="Reds", norm=norm)
sm.set_array([])
# Modify old legend
handles, labels = ax.ax.get_legend_handles_labels()
ax.ax.figure.colorbar(sm)
这开始实现我的意图,但我有两个问题:
1) 如何编辑旧图例以展开值使其可见?
2) 有没有办法显式控制圆的大小,这样我就不必手动调整?我需要圆的直径达到1个单位
您可以尝试使用python中的一些图形库,我建议您使用python中名为seaborn的散点图库:
如果您有任何问题,请随时向我询问seaborn 谢谢!我试过了,我用seaborn Qs编辑了我的原始问题:)