从pandas在seaborn clustermap中设置col_colors

时间:2015-12-17 12:36:37

标签: python pandas matplotlib seaborn

我有一个从pandas数据帧生成的clustermap。其中两列用于生成clustermap,我需要使用第3列使用org.apache.camel.component.cxf.CxfOperationException: JAXRS operation failed invoking http://0.0.0.0:8089/monnitmysqltsdb?restletMethods=POST with statusCode: 405 at org.apache.camel.component.cxf.jaxrs.CxfRsProducer.populateCxfRsProducerException(CxfRsProducer.java:419) at org.apache.camel.component.cxf.jaxrs.CxfRsProducer.invokeHttpClient(CxfRsProducer.java:232) at org.apache.camel.component.cxf.jaxrs.CxfRsProducer.process(CxfRsProducer.java:89) at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) at org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:169) at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:341) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:164) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.processor.Pipeline.process(Pipeline.java:121) at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:668) at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:596) at org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:237) at org.apache.camel.processor.Splitter.process(Splitter.java:104) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:141) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) at org.apache.camel.processor.MulticastProcessor.doProcessParallel(MulticastProcessor.java:814) at org.apache.camel.processor.MulticastProcessor.access$200(MulticastProcessor.java:84) at org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:314) at org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:299) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 调色板生成col_colors栏(值将为0 - 1,浅 - 深色)。

伪代码看起来像这样:

sns.palplot(sns.light_palette('red'))

我正在努力寻找有关如何设置col_colors的详细信息,以便将正确的值链接到相应的切片。一些方向将不胜感激。

1 个答案:

答案 0 :(得分:5)

使用示例数据更容易解释此示例。我不知道您的数据是什么样的,但是说您有一堆GC内容测量值例如:

DockPanel

因此数据是GC内容,然后有一个描述源的列。假设我们要绘制GC内容的聚类地图,我们使用import seaborn as sns import numpy as np import pandas as pd data = {'16S':np.random.normal(.52, 0.05, 12), 'ITS':np.random.normal(.52, 0.05, 12), 'Source':np.random.choice(['soil', 'water', 'air'], 12, replace=True)} df=pd.DataFrame(data) df[:3] 16S ITS Source 0 0.493087 0.460066 air 1 0.607229 0.592945 water 2 0.577155 0.440726 water 列来定义网络

Source

enter image description here 基本上上面的代码大部分都是创建一个颜色向量,它与数据框的#create a color palette with the same number of colors as unique values in the Source column network_pal = sns.light_palette('red', len(df.Source.unique())) #Create a dictionary where the key is the category and the values are the #colors from the palette we just created network_lut = dict(zip(df.Source.unique(), network_pal)) #get the series of all of the categories networks = df.Source #map the colors to the series. Now we have a list of colors the same #length as our dataframe, where unique values are mapped to the same color network_colors = pd.Series(networks).map(network_lut) #plot the heatmap with the 16S and ITS categories with the network colors #defined by Source column sns.clustermap(df[['16S', 'ITS']], row_colors=network_colors, cmap='BuGn_r') 列相对应。你当然可以手动创建它,其中列表中的第一个颜色将映射到数据框中的第一行,第二个颜色将映射到第二行,依此类推(当你绘制它时,这个顺序会改变),然而,这将是很多工作。我使用了红色调色板,因为这是你在问题中提到的,尽管我可能会建议使用不同的调色板。我按行着色,但你可以为列做同样的事情。希望这有帮助!