小编Pet*_*ete的帖子

从Seaborn调色板中提取RGB或6位数代码

Seaborn可以选择创建漂亮的调色板.我希望使用这些调色板生成颜色,这些颜色可以在地图中很好地协同工作,其中根据某些属性对国家进行着色.以下代码从浅到深产生8种紫色阴影.另请注意,指定颜色数量的能力是必需的,因此我不能只使用定义颜色的固定调色板.

import seaborn as sns
num_shades = 8
sns.palplot(sns.cubehelix_palette(num_shades))
Run Code Online (Sandbox Code Playgroud)

如果我运行相同但在这样的列表中:

color_list = sns.cubehelix_palette(num_shades)
Run Code Online (Sandbox Code Playgroud)

你得到:

[[0.9312692223325372, 0.8201921796082118, 0.7971480974663592], ... 
Run Code Online (Sandbox Code Playgroud)

这些显然不是RGB值,这是我需要的.

1)这些颜色是什么格式?2)如何转换为RGB或6位数代码?

我试过很长一段时间没找到答案.我看过这里和其他seaborn文档:

https://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.set_color_codes.html

我可以使用以下方法从RGB转换为6位数代码:

在Python中将RGB颜色元组转换为六位数代码

但我被困在如何直接或通过获取RGB值.任何帮助,将不胜感激.

python rgb seaborn

14
推荐指数
2
解决办法
9293
查看次数

Python打开html文件,截屏,裁剪并保存为图像

我使用Bokeh包生成地图以显示模拟结果.输出是具有交互性的html格式的单独地图.各个地图需要交互性.

请参阅此链接以获取示例:

http://bokeh.pydata.org/en/0.10.0/docs/gallery/texas.html

模拟可以自动设置为运行多次,并为每次运行生成一个映射.这可能是100的地图.我希望能够将地图拼接在一起以创建电影 - 这不需要交互性.Bokeh具有通过浏览器创建PNG文件的功能,因此可以手动将每个地图保存为文件,并使用ffmpeg创建电影.但是,如果你需要为100个文件做这个,那么这不是一个真正的选择.目前没有办法通过Bokeh自动生成PNG文件,但我相信它会在某些时候添加.

所以我需要一个解决方法.我的想法是从他们存储在本地驱动器上的位置打开每个html文件,拍摄屏幕截图,裁剪图像以保留所需的部分并保存.但我还没有找到一个有效的解决方案.

裁剪图像很简单:

from PIL import Image

img = Image.open(file_name)
box = (1, 1, 1000, 1000)
area = img.crop(box)
area.save('saved_image', 'jpeg')
Run Code Online (Sandbox Code Playgroud)

我的问题是打开html文件并首先拍摄屏幕截图以提供上述代码.

为此我尝试了以下内容,但都需要URL而不是html文件.另外两个都使用Firefox不适合我,但我已经安装了chrome并适当地修改了代码.

如何在python中使用Selenium WebDriver进行部分截图?

http://www.idiotinside.com/2015/10/20/take-screenshot-selenium-python/

我的代码是:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('file_name')
driver.save_screenshot('image.png')
driver.quit()
Run Code Online (Sandbox Code Playgroud)

哪个回报:

{"code":-32603,"message":"Cannot navigate to invalid URL"}
Run Code Online (Sandbox Code Playgroud)

显然,文件名不是网址,因此很清楚.如果你把它传递给一个网站,它的工作正常.获取html加载和拍照的任何帮助将不胜感激!它不必涉及Selenium.

html python selenium bokeh

5
推荐指数
2
解决办法
9739
查看次数

Python从嵌套字典中提取最大值

我有一个表格的嵌套字典:

 {'2015-01-01': {'time': '8', 'capacity': '5'}, 
  '2015-01-02': {'time': '8', 'capacity': '7'},
  '2015-01-03': {'time': '8', 'capacity': '8'} etc}
Run Code Online (Sandbox Code Playgroud)

使用dictreader从csv文件创建字典.我希望能够做的是返回容量的最大值.所以在这种情况下8.

我可以用:

for k,v in input_dict.items():
    if temp_max < int(v['capacity']):
        temp_max = int(v['capacity'])
Run Code Online (Sandbox Code Playgroud)

哪有效,但我想知道是否有更简洁的方法?我搜索并找到了提取与最大值相关的顶级键的方法,这当然不是我需要的.见下文:

max(input_dict, key=lambda v: input_dict[v]['capacity'])
Run Code Online (Sandbox Code Playgroud)

这将返回'2015-01-03',所以我想有一个简单的模型,上面的一个班轮将给我我需要的但是让我难过!

有任何想法吗?

python dictionary

4
推荐指数
1
解决办法
3209
查看次数

熊猫除法创建额外的列和 NaN

我正在尝试计算累积总和,然后将此累积总和的每一列除以另一个数据框列。请参阅下面的代码。

import pandas as pd
import numpy as np


def cum_sums(input_df):

    bin_values = np.arange(0, 72, 24)
    group_names = np.arange(0, 48, 24)

    input_df['categories'] = pd.cut(input_df['time'], bin_values, labels=group_names)
    category_sum = input_df.groupby(['area', 'categories'])['categories'].size()
    cum_sum = category_sum.groupby(level=[0]).cumsum().reset_index(name='cum_sum')
    # pivot to get right format
    cum_sum_flipped = cum_sum.pivot(index='area', columns='categories', values='cum_sum')
    # and then add back in any missing categories
    cum_sum_flipped = cum_sum_flipped.reindex(columns=group_names).ffill(axis=1).replace('Nan', 0, regex=True)

    return cum_sum_flipped

data1 = {'area': ['a', 'b', 'c', 'a', 'b'],
         'time': [7, 11, 25, 27, 34]}
data2 = {'area': ['a', 'b', 'c'], …
Run Code Online (Sandbox Code Playgroud)

python pandas

2
推荐指数
1
解决办法
3644
查看次数

标签 统计

python ×4

bokeh ×1

dictionary ×1

html ×1

pandas ×1

rgb ×1

seaborn ×1

selenium ×1