我想使用 python 中 matplotlib 中的 pyplot 创建一个带有 2 个箱线图的图形。
我正在使用鸢尾花数据集,该数据集提供了三种类型 150 朵花的花瓣长度:Setosa、Versicolor、Virginica。我想为 Setosa 的花瓣长度创建一个箱线图,为 Versicolor 的花瓣长度创建一个箱线图,所有这些都在同一个图上。
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from matplotlib import pyplot as plt
# From the iris dataset I create a dataframe which contains only the features
# of the flowers (sepal length, sepal width, petal length, petal width and the
# flower type.
data = load_iris()
X= data["data"]
y = data ["target"]
iris=pd.DataFrame(X)
iris["target"]=y
iris.columns=data['feature_names']+["target"]
iris["target"]=iris["target"].apply(lambda …Run Code Online (Sandbox Code Playgroud) 我有 4 个变量(A、B、C、D),在 3 个位置上具有相似的模式。我想绘制一个箱线图(变量作为 Y 轴上的点,位置作为 X)。但变量具有不同数量级的值。有没有办法缩放 Y 轴并将所有变量绘制在箱线图上?可能是颜色不同吧。
Location = c("Washington","Washington","Washington","Washington","Washington","Washington", "Maine","Maine","Maine","Maine","Maine", "Florida","Florida","Florida","Florida","Florida","Florida")
A = c(0.000693156, 0.000677354, 0.000727863, 0.000650822, 0.000908343, 0.001126689, 0.001316292, 0.000975274, 0.00109082, 0.001057585, 0.000927826, 0.000552769, 0.000532546, 0.000559781, 0.000771569, 0.000563436, 0.000551136)
B = c(0.001915388, 0.001936627, 0.001476521, 0.001573681, 0.002584282, 0.00738909, 0.008089839, 0.006616564, 0.00495211, 0.004515925, 0.003791596, 0.000653847, 0.000350701, 0.000559781, 0.001920087, 0.000738206, 0.001077627)
C = c(0.000138966, 0.000104745, 0.000145573, 0.000103305, 5.08255E-05, 0.000361988, 0.000264876, 0.000454172, 0.000277471, 0.000117919, 8.9214E-05, 0.000173727, 0.000108241, 8.54628E-05, 2.35593E-05, 3.1302E-05, 1.12019E-05)
D = c(0.000108829, 0.000135005, 0.000120617, 9.29746E-05, 0.000105561, 9.27596E-05, …Run Code Online (Sandbox Code Playgroud) 我正在使用“iris.csv”数据制作箱线图。我试图通过测量(即花瓣长度、花瓣宽度、萼片长度、萼片宽度)将数据分解为多个数据框,然后在 forloop 上绘制箱线图,从而添加子图。
最后,我想立即为所有箱线图添加一个通用图例。但是,我做不到。我已经使用几个 stackoverflow 问题尝试了几个教程和方法,但我无法修复它。
这是我的代码:
import seaborn as sns
from matplotlib import pyplot
iris_data = "iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(iris_data, names=names)
# Reindex the dataset by species so it can be pivoted for each species
reindexed_dataset = dataset.set_index(dataset.groupby('class').cumcount())
cols_to_pivot = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width']
# empty dataframe
reshaped_dataset = pd.DataFrame()
for var_name in cols_to_pivot:
pivoted_dataset = reindexed_dataset.pivot(columns='class', values=var_name).rename_axis(None,axis=1)
pivoted_dataset['measurement'] = var_name
reshaped_dataset = reshaped_dataset.append(pivoted_dataset, ignore_index=True)
## Now, lets spit the dataframe into …Run Code Online (Sandbox Code Playgroud) 我正在使用这个漂亮的箱线图,来自 @Parfait 的回答。
j不得不使用range(i*5,i*5+5). 为什么?red。medianprops=dict(color="red")行不通的。怎么做?免责声明:我不知道我在做什么。
这是使用随机数据的代码:
# import the required library
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import string
import matplotlib.colors as mc
import colorsys
# data
df = pd.DataFrame(np.random.normal(np.random.randint(5,15),np.random.randint(1,5),size=(100, 16)), columns=list(string.ascii_uppercase)[:16])
# Boxplot
fig, ax = plt.subplots(figsize=(9, 10))
medianprops=dict(color="red")
ax = sns.boxplot(data=df, orient="h", showfliers=False, palette = "husl")
ax = sns.stripplot(data=df, orient="h", jitter=True, size=7, …Run Code Online (Sandbox Code Playgroud) 出于教育目的,我尝试使用 ggplot2 生成与点图结合的水平箱线图。但是,我想生成一个在 2.5% 和 97.5% 百分位数处带有须线的自定义箱线图,而不是geom_boxplot. 因此,我决定使用以下代码:
y <- rnorm(100)
df = data.frame(y)
df_boxplot <- data.frame(
x_coord = 0.5,
y0 = quantile(y, 0.025),
y25 = quantile(y, 0.25),
y50 = median(y),
y75 = quantile(y, 0.75),
y100 = quantile(y, 0.975)
)
# Vertical orientation with custom whiskers works
ggplot() +
geom_boxplot(data = df_boxplot,
aes(x = x_coord, ymin = y0, lower = y25, middle = y50, upper = y75, ymax = y100),
stat = "identity"
) +
geom_jitter(data = df, …Run Code Online (Sandbox Code Playgroud) 我有一个数据集,我用它制作了一个箱线图。但我想在两组数据之间添加一些空间。
这是我的数据:
structure(list(variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 6L, …Run Code Online (Sandbox Code Playgroud) 我一直在努力做这个盒子图一整天.我很快就放弃了.请帮忙.我只想为我的3组A,B和C提供一个简单的箱线图.这是我简化的数据:
> mydata
A01 A02 A03 B01 B02 B03 C01 C02 C03
id0001 1 2 3 6 7 8 11 12 13
Run Code Online (Sandbox Code Playgroud)
A01,A02和A03应该弥补的置信区间为A,等等.我怎么能有3组在x轴一个非常简单的箱线图?虽然盒子将是巨大的,我会很感激,如果有人可以帮助我让我的情节相似,这一个.最后,我想打一个包含多个ID的图形,所以它看起来像这一个,但误差棒像第一个.
如果有人可以帮助我或给我如何进行的提示,我会非常感激!
谢谢.
我想在单个图中绘制R中的多个箱图,并将它们成对分组.我是R的初学者,虽然有几个主题处理相同的主题(R中的多个箱图),但我找不到一个全面的方法来解决这个问题.我想尽可能使用基本图形.
我有10组值,所有这些值都包含30个值(可以是任何正值).在这10个集合中,5个是类型1,另外5个是类型2.我的目标是有10个箱图(每组值一个)并将每组类型1与一组类型2组合在一个图形中.最后,我希望有5个数据集,每个数据包含两个箱图.我还希望每个簇(A,B,C,D,E)有1个x标签,并且类型1的数据为红色,类型2的数据为绿色.
到目前为止我的代码是:
A1data <- read.table("A1data.csv",header=TRUE,sep=";")
B1data <- read.table("B1data.csv",header=TRUE,sep=";")
C1data <- read.table("C1data.csv",header=TRUE,sep=";")
D1data <- read.table("D1data.csv",header=TRUE,sep=";")
E1data <- read.table("E1data.csv",header=TRUE,sep=";")
A2data <- read.table("A2data.csv",header=TRUE,sep=";")
B2data <- read.table("B2data.csv",header=TRUE,sep=";")
C2data <- read.table("C2data.csv",header=TRUE,sep=";")
D2data <- read.table("D2data.csv",header=TRUE,sep=";")
E2data <- read.table("E2data.csv",header=TRUE,sep=";")
A1 <- 100*(A1data$x-A1data$y)/A1data$x
B1 <- 100*(B1data$x-B1data$y)/B1data$x
C1 <- 100*(C1data$x-C1data$y)/C1data$x
D1 <- 100*(D1data$x-D1data$y)/D1data$x
E1 <- 100*(E1data$x-E1data$y)/E1data$x
A2 <- 100*(A2data$x-A2data$y)/A1data$x
B2 <- 100*(B2data$x-B2data$y)/B1data$x
C2 <- 100*(C2data$x-C2data$y)/C1data$x
D2 <- 100*(D2data$x-D2data$y)/D1data$x
E2 <- 100*(E2data$x-E2data$y)/E1data$x
A <- cbind(A1,A2)
B <- cbind(B1,B2)
C <- cbind(C1,C2)
D <- …Run Code Online (Sandbox Code Playgroud) 我正在尝试并且非常喜欢ggplot的python端口(http://ggplot.yhathq.com/)
我想制作一些数据箱图,但无法弄清楚如何做,希望有人可以提供帮助.
这是示例代码:
#Create pandas dataframe with random number data and labels 'A', 'B'
data = pd.DataFrame(np.random.randn(1,40)).transpose()
labels = np.repeat(['A','B'],20)
data['labels']=labels
data.columns = ['vals','labels']
Run Code Online (Sandbox Code Playgroud)
产量
vals labels
0 -0.685582 A
1 -0.332966 A
2 0.766283 A
3 1.751677 A
4 1.613434 A
Run Code Online (Sandbox Code Playgroud)
现在我试试
ggplot(data,aes(x='labels',y='vals')) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)
我得到了错误
<repr(<ggplot.ggplot.ggplot at 0x7f204dbb4810>) failed: TypeError: cannot perform reduce with flexible type>
Run Code Online (Sandbox Code Playgroud)
经过一些搜索,我认为问题是标签是字符串值的分类数据,但我不知道如何让ggplot在x轴上识别它
我想使用HighCharts创建箱图.正如我在文档中看到的,我需要为Highcharts提供所需的五点汇总,即min,max,q1,q3,用于创建boxplot的中值.
给定一个由数字组成的任意长度数组,如何有效地计算这五个数字?JS中有快速的方法吗?
boxplot ×10
ggplot2 ×5
r ×5
python ×4
matplotlib ×2
pandas ×2
seaborn ×2
highcharts ×1
javascript ×1
label ×1
spacing ×1