根据变量,seaborn目前提供通过设置来分割小提琴的功能。我想制作一个“半”小提琴图,即每个小提琴的一半被省略的图。对于每个连续变量,此类图描绘了类似于pdf的内容,仅绘制在每个类别变量的每个垂直线的一侧。split=Truehue
我设法欺骗seaborn了使用绘制的值范围之外的额外数据点和额外的虚拟色调来绘制此图形,但是我想知道是否可以在不实际更改数据集的情况下(例如在sns.violinplot()参数内)完成此操作。
例如,此图:
是由以下代码段创建的:
# imports
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# load dataset from seaborn
datalist = sns.get_dataset_names()
dataset_name = 'iris'
if dataset_name in datalist:
df = sns.load_dataset(dataset_name)
else:
print("Dataset with name: " + dataset_name + " was not found in the available datasets online by seaborn.")
# prepare data
df2 = df.append([-999,-999,-999,-999,'setosa'])
df2['huecol'] = 0.0
df2['huecol'].iloc[-1]= -999
# plot …Run Code Online (Sandbox Code Playgroud) Python 3的推出了在调用时要返回的发电机状物体range()和zip().返回的对象就像一个生成器,可以迭代一次,但不能很好地"打印",就像enumerate()返回参数一样.
然而,我很困惑地看到它们是不同的对象类型并且不属于types.GeneratorType,或者至少这是types模块显示的内容.如果期望发电机运行的功能将无法检测到它们.他们的遗产是什么?它们是否属于主要的"发电机"结构,因此它们可以与其他发电机一起识别?
import types
a = [1,2,3]
b = [4,5,6]
# create some generator-type objects
obj_zip = zip(a,b)
obj_enu = enumerate(a)
obj_r = range(10)
print(type(obj_zip))
print(type(obj_enu))
print(type(obj_r))
# checking against types.GeneratorType returns False
print(isinstance(obj_zip,types.GeneratorType))
print(isinstance(obj_enu,types.GeneratorType))
print(isinstance(obj_r,types.GeneratorType))
# checking against their own distinct object types returns True
print(isinstance(obj_zip,zip))
Run Code Online (Sandbox Code Playgroud)