我使用seaborn的线图根据数据进行绘制,其代码如下所示:
sns.lineplot( x=df["#Energy"], y=df["py"]+df["px"]+df["pz"])
Run Code Online (Sandbox Code Playgroud)
我得到的情节是
现在我想将其下方的区域涂成不透明的蓝色,我该怎么做,我在seaborn lineplot文档中找不到与此相关的任何内容,感谢所有帮助的努力
通过以下代码,我可以使用seaborn的散点图来绘制数据,并将某些颜色分配给数据值。
如何设置此示例中使用的颜色数量?(例如,如果我只想使用两种颜色或超过示例中显示的 6 种颜色)
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
print("tips.columns=", tips.columns) # tips.columns= Index(['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size'], dtype='object')
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="total_bill", )
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用seaborn中的分割小提琴图来绘制具有不同范围的两个变量。
这是我到目前为止所做的:
from matplotlib import pyplot as plt
import seaborn as sns
import numpy as np
df1 = pd.read_csv('dummy_metric1.csv')
df2 = pd.read_csv('dummy_metric2.csv')
fig, ax2 = plt.subplots()
sns.set_style('white')
palette1 = 'Set2'
palette2 = 'Set1'
colors_list = ['#78C850', '#F08030', '#6890F0', '#A8B820', '#F8D030', '#E0C068', '#C03028', '#F85888', '#98D8D8']
ax1 = sns.violinplot(y=df1.Value,x=df1.modality,hue=df1.metric, palette=palette1, inner="stick")
xlim = ax1.get_xlim()
ylim = ax1.get_ylim()
for violin in ax1.collections:
bbox = violin.get_paths()[0].get_extents()
x0, y0, width, height = bbox.bounds
violin.set_clip_path(plt.Rectangle((x0, y0), width / 2, height, transform=ax1.transData))
ax1.set_xlim(xlim)
ax1.set_ylim(ylim)
ax1.set_title("dummy")
ax1.set_ylabel("metric1")
ax1.set_xlabel("Modality") …Run Code Online (Sandbox Code Playgroud) 我有三个列表:x、y 和 w,如图所示:x 是对象的名称。y 是其高度,w 是其宽度。
x = ["A","B","C","D","E","F","G","H"]
y = [-25, -10, 5, 10, 30, 40, 50, 60]
w = [30, 20, 25, 40, 20, 40, 40, 30]
Run Code Online (Sandbox Code Playgroud)
我想在 Python 中将这些值绘制在条形图中,其中 y 代表条形的高度,w 代表条形的宽度。
当我使用它绘制它时
colors = ["yellow","limegreen","green","blue","red","brown","grey","black"]
plt.bar(x, height = y, width = w, color = colors, alpha = 0.8)
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试使用以下方法标准化宽度,以便条形图不会彼此重叠
w_new = [i/max(w) for i in w]
plt.bar(x, height = y, width = w_new, color = colors, alpha = 0.8)
#plt.axvline(x = ?)
plt.xlim((-0.5, 7.5))
Run Code Online (Sandbox Code Playgroud)
我得到了比以前更好的结果,如下所示: …
在用seaborn绘制的直方图中,当条形由于使用而重叠时hue,颜色会发生变化,通常无法区分。这使得很难向人们解释这些情节。当有 10 个用渐变绘制的类时,这变得越来越困难,并且理解哪种颜色在哪种颜色上变得更加困难。那么,如何在绘图或图例中显示结果颜色是由于多个条的重叠而产生的。
# imports
from sklearn.datasets import load_iris
from matplotlib import pyplot as plt
%matplotlib inline
import seaborn as sns
# getting the data
iris = load_iris(as_frame=True)['frame']
# make the histogram
sns.set(rc={'figure.figsize':(20, 5)})
sns.histplot(data=iris, x='sepal length (cm)', hue='target')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想坚持使用直方图。
我该怎么做呢?
目标:给定一个具有多行、分组条形图和映射条形图的seaborn catplot (kind="bar"),如何添加统计注释(p 值)。
来自@Trenton McKinney的以下代码生成了我的图表,没有统计注释。我想在此图中插入统计注释:
import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.catplot(x="sex", y="total_bill", hue="smoker", row="time", data=tips, kind="bar", ci = "sd",
edgecolor="black", errcolor="black", errwidth=1.5, capsize = 0.1, height=4, aspect=.7,alpha=0.5)
g.map(sns.stripplot, 'sex', 'total_bill', 'smoker', hue_order=['Yes', 'No'], order=['Male', 'Female'],
palette=sns.color_palette(), dodge=True, alpha=0.6, ec='k', linewidth=1)
Run Code Online (Sandbox Code Playgroud)
我尝试过的:我尝试使用statannotations.Annotator.Annotator.plot_and_annotate_facets()。但是,我无法让它正常工作。
我还尝试使用statannotations.Annotator.Annotator.new_plot()。然而,这仅适用于条形图,但不适用于猫形图。这是基于@r-beginners 的相应代码:
import seaborn as sns
from statannotations.Annotator import Annotator
%matplotlib inline
import matplotlib.pyplot as plt
df = sns.load_dataset("tips")
x="sex"
y="total_bill"
hue="smoker"
hue_order=['Yes', 'No']
pairs …Run Code Online (Sandbox Code Playgroud) 我试图根据与点相关的特定关系来连接线。在此示例中,线条将连接玩家所在的球场。我可以创建基本结构,但还没有找到一种相当简单的方法来创建此附加功能。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df_dict={'court':[1,1,2,2,3,3,4,4],
'player':['Bob','Ian','Bob','Ian','Bob','Ian','Ian','Bob'],
'score':[6,8,12,15,8,16,11,13],
'win':['no','yes','no','yes','no','yes','no','yes']}
df=pd.DataFrame.from_dict(df_dict)
ax = sns.boxplot(x='score',y='player',data=df)
ax = sns.swarmplot(x='score',y='player',hue='win',data=df,s=10,palette=['red','green'])
plt.show()
Run Code Online (Sandbox Code Playgroud)
我有一个图表,将贝叶斯平均点数据绘制在一条线上,并在平均值周围有可信的间隔。
我正在尝试用半透明颜色填充两条可信线之间,以便平均线真正弹出。我尝试过以下方法:
plt.fill_between(b.get_data(), c.data_get(), color='blue', alpha = .5)
Run Code Online (Sandbox Code Playgroud)
我正在从推理集中提取这些数据arviz。这是一个玩具数据集。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
mean = np.array([861.98525 , 705.23875 , 640.14575 , 658.727625, 728.23775 ,
792.4645 , 803.045375, 763.425875, 721.785375, 713.182375,
740.543375, 781.466875])
confidence1 = np.array([788. , 607. , 493. , 443.975, 435.975, 412. , 366.975,
295. , 243. , 207. , 181. , 161. ])
confidence2 = np.array([ 938. , 811. , 815. , 935.025, 1150.025, 1391.05 ,
1556.05 , …Run Code Online (Sandbox Code Playgroud) 如何缩放seaborn联合图的边际kdeplot?
假设我们有 1000 个类型“a”的数据、100 个类型“b”的数据和“100”个类型“c”的数据。
在这种情况下,边际 kdeplot 的尺度看起来并不相同,因为分类数据的大小完全不同。
我如何使这些相同?
我制作了一个玩具脚本,如下所示:
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
ax, ay = 1 * np.random.randn(1000) + 2, 1 * np.random.randn(1000) + 2
bx, by = 1 * np.random.randn(100) + 3, 1 * np.random.randn(100) + 3
cx, cy = 1 * np.random.randn(100) + 4, 1 * np.random.randn(100) + 4
a = [{'x': x, 'y': y, 'kind': 'a'} for x, y in zip(ax, ay)]
b …Run Code Online (Sandbox Code Playgroud) 给定以下示例数据
data =\
{'q1': [6, 4, 4, 4, 6, 6, 6, 4, 6, 6, 6, 6],
'q2': [3, 3, 3, 4, 3, 3, 4, 3, 4, 3, 4, 1],
'q3': [6, 3, 4, 4, 4, 4, 6, 6, 6, 6, 4, 1],
'q4': [3, 6, 6, 6, 6, 6, 4, 4, 6, 4, 6, 4],
'q5': [4, 3, 3, 3, 3, 6, 6, 4, 4, 6, 3, 4],
'q6': [3, 3, 4, 4, 6, 3, 3, 1, 6, 4, 4, …Run Code Online (Sandbox Code Playgroud) seaborn ×10
python ×9
matplotlib ×7
pandas ×2
python-3.x ×2
bar-chart ×1
boxplot ×1
facet-grid ×1
heatmap ×1
jointplot ×1
line-plot ×1
scaling ×1
scatter-plot ×1
violin-plot ×1